1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
package main
import (
"fmt"
)
func main() {
// type sliceStruct struct {pointer, len, cap}
// data=nil len=0 cap=0
var a []string // nil
// 注意 与 a := []string{} 的区别,这种是已经初始化过的也就是系统默认调用过make方法其零值不为nil
// 更多 var a []string 和 a := []string{} 形式将在切片一节中讨论
// append 会初始化a
a1 := append(a, "s")
fmt.Println(a, a1) // [] [s]
//var m map[string]int
//m["one"] = 1 // panic: assignment to entry in nil map
// data len
// make会初始化
var m1 map[string]int = make(map[string]int, 2)
m1["one"] = 1
fmt.Println(m1) // map[one:1]
var ss *string = new(string)
*ss = "abc"
fmt.Println(ss, *ss) // 0xc000088260 abc
// panic: runtime error: invalid memory address or nil pointer dereference
//var s *int // 此时s的默认值为nil,*s并没有分配内存
//*s = 10 // 报错 s 并没有分配内存空间
}
|