获取 UNIX 时间戳

1
2
now := time.Now().Unix()
fmt.Println("type: %T, value: %v", now, now)
1
type: int64, value: 1535031653

向 slice 里追加元素

1
2
3
s := []int{1, 2, 3}
s = append(s, 4)
fmt.Println(s)
1
[1 2 3 4]

遍历 map

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
m := make(map[string][]int)
m["hello"] = []int{1, 2, 3}
m["world"] = []int{4, 5, 6}
for k, v := range m {
    fmt.Println(k, v)
}
for k := range m {
    fmt.Println(k)
}
for _, v := range m {
    fmt.Println(v)
}
1
2
3
4
5
6
hello [1 2 3]
world [4 5 6]
hello
world
[1 2 3]
[4 5 6]

删除 map 中的元素

1
2
3
4
5
6
7
m := make(map[string][]int)
m["hello"] = []int{1, 2, 3}
m["world"] = []int{4, 5, 6}
delete(m, "hello")
for k, v := range m {
    fmt.Println(k, v)
}
1
world [4 5 6]

值得注意的一点:在对一个 map 的 range loop 中,删除 map 的元素,例如下面这段伪代码,是安全的。

1
2
3
4
5
for key := range m {
    if key.expired() {
        delete(m, key)
    }
}

详细问题及解释见 StackOverflow

结构体的定义和初始化

1
2
3
4
5
6
7
8
9
type st struct {
    a int
    b int
    c string
}
x := st{a: 10, b: 20, c: "hello"}
fmt.Println(x)
x.c = "world"
fmt.Println(x)
1
2
{10 20 hello}
{10 20 world}