go杂货铺

Posted hongpeng0209

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了go杂货铺相关的知识,希望对你有一定的参考价值。

json序列化

内存中变成可存储或传输的过程称之为序列化(dict,split,struct转string)

package main

import (
	"encoding/json"
	"fmt"
)

type Stu struct {
	Name string
	Age  int
}

func JsonDump() (ret string, err error) {
	stu1 := Stu{
		Name: "somebody",
		Age:  20,
	}
	data, err := json.Marshal(stu1)
	if err != nil {
		err = fmt.Errorf("json dump failed:", err)
		return
	}
	ret = string(data)
	fmt.Println(ret)
	return
}

func main() {
	JsonDump()
}

  

json反序列化

磁盘读取到内存

需要先定义一个存储的数据类型(map struct),string要转成byte

package main

import (
	"encoding/json"
	"fmt"
)

type Stu struct {
	Name string
	Age  int
}

func JsonDump() (ret string, err error) {
	stu1 := Stu{
		Name: "somebody",
		Age:  20,
	}
	data, err := json.Marshal(stu1)
	if err != nil {
		err = fmt.Errorf("json dump failed:", err)
		return
	}
	ret = string(data)
	return
}

func JsonLoad(res string) (ret interface{}, err error) {
	var stu Stu
	err = json.Unmarshal([]byte(res), &stu)
	if err != nil {
		err = fmt.Errorf("json loads failed:", err)
		return
	}
	ret = stu
	return
}

func main() {
	response, _ := JsonDump()
	res, _ := JsonLoad(response)
	fmt.Println(res)
}

  

命令行参数的解析

flag模块

package main

import (
	"flag"
	"fmt"
)

func main() {
	var confPath string
	var command string
	var port int

	flag.StringVar(&confPath, "c", "conf", "conf file of app")//变量名  -c   默认值  描述
	flag.StringVar(&command, "a", "online", "command to execute")
	flag.IntVar(&port, "p", 10000, "port of service")
	flag.Parse()

	fmt.Println(confPath)
	fmt.Println(command)
	fmt.Println(port)
}

  

 

以上是关于go杂货铺的主要内容,如果未能解决你的问题,请参考以下文章

Go中的SSRF攻防战

[Go] 通过 17 个简短代码片段,切底弄懂 channel 基础

解决go: go.mod file not found in current directory or any parent directory; see ‘go help modules‘(代码片段

你知道的Go切片扩容机制可能是错的

深入剖析go中字符串的编码问题——特殊字符的string怎么转byte?

golang代码片段(摘抄)