共计 598 个字符,预计需要花费 2 分钟才能阅读完成。
channel
nil 和 close channel
读写 nil 均会阻塞。敞开的管道依然能够读取数据 (包含 select 也会选中),向敞开的管道写数据会处触发 panic
slice
make slice
s := make([]int, 10, 100)
a := new([]int)
fmt.Println(*a == nil) // true
b := make([]int, 0)
fmt.Println(b == nil) // true
var c []int
fmt.Println(c == nil) // false
切取
有两种表达方式:
a[low:hight]
a[low:high:max] // 其中 max 示意容量
a 是数组和 slice 都会生成 slice, 如果 a 是字符串那么会生成字符串
数据结构
var a []int
type SliceHeader struct {
Data uintptr // 0
Len int // 0
Cap int // 0
}
var a = make([]int, 0)
var b = []int{}
type SliceHeader struct {
Data uintptr // 指向 8 字节内容
Len int // 0
Cap int // 0
}
string
utf-8
func testString() {
a := "你好"
fmt.Println(len(a)) // 6
for i, c := range a {fmt.Println(i, c, string(c)) // c 是 int32
// 0 20320 你
// 3 22909 好
}
}
正文完