Go语言小记

风吹过的 路依然远 你的故事讲到了哪

最近一个月写了大概一万行左右Go代码,写一点入门笔记。

Go中的JSON

定义

type person struct {
	Name    string   `json:"name"`
	Age     int64    `json:"age"`
	Weights []weight `json:"weights"`
}
type weight struct {
	Time  string  `json:"time"`
	Value float64 `json:"weight"`
}

使用

person := person{
    Name:    "狗蛋",
    Age:     12,
    Weights: make([]weight, 0),
}
person.Weights = append(person.Weights, weight{Time: "2020-10-10", Value: 55.55})

Go中的接口

func toString(v interface{}) string {
	switch v.(type) {
	case int:
		return strconv.Itoa(v.(int))
	case float64:
		return strconv.FormatFloat(v.(float64), 'f', -1, 64)
	case bool:
		if v.(bool) {
			return "是"
		}
		return "否"
	default:
		return "Unknown type"
	}
}

这是一个很简单的例子,通过判断interface{}中的类型,返回对应的可打印字符串。(虽然直接用fmt.println()或者fmt.prinit("%v")能直接打印

顺序遍历Go语言的Map

Go语言中的map内部基于哈希表,遍历时会乱序。

keys := make([]int, 0)
for k, _ := range romanNumeralDict {
    keys = append(keys, k)
}
sort.Ints(keys)
for _, k := range keys {
    fmt.Println(k, romanNumeralDict[k])
}

通过上面这段代码就可以顺序遍历一个map啦~