func main() {
var m map[int]int
fmt.Println("len", len(m))
for k, v := range m {
fmt.Println(k, v)
}
if a, ok := m[1]; ok {
fmt.Println(a)
}
fmt.Println("del")
delete(m, 1)
// m[1] = 1 // error: panic: assignment to entry in nil map
var s []int
fmt.Println("len", len(s))
for i, v := range s {
fmt.Println(i, v)
}
fmt.Println("del")
s = s[:0]
var s2 [1]int
copy(s2[:], s)
var s3 []int
s3 = append(s3, 1)
fmt.Println(s3[0])
var ch chan int
fmt.Println("len", len(ch))
go func() {
fmt.Println("range ch")
for v := range ch {
fmt.Println(v)
}
}()
go func() {
fmt.Println("recv ch")
if v, ok := <-ch; ok {
fmt.Println(v)
}
}()
// 下面的代码会出现 panic: close of nil channel
// close(ch)
time.Sleep(time.Second)
}
我们都知道map、slice、chan需要通过make创建,默认都是空值。