Open stkevintan opened 5 years ago
命名接口的时候,也需要遵守Go语言的命名惯例。如果接口类型只包含一个方法,那么这个类型的名字以er结尾。
通道用完尽量关闭,否则会阻塞for ret range chan1{}之类的语句
for ret range chan1{}
切片还有第三个参数: slice[i:j:k]代表长度为j-i ,容量为k-i
slice[i:j:k]
j-i
k-i
设置切片容量和长度相等的好处:
// 创建字符串切片 // 其长度和容量都是5个元素 source := []string{"Apple", "Orange", "Plum", "Banana", "Grape"} // 对第三个元素做切片,并限制容量 // 其长度和容量都是1个元素 slice := source[2:3:3] // 向slice追加新字符串 slice = append(slice, "Kiwi")
如果不加第三个索引,由于剩余的所有容量都属于slice,向slice追加Kiwi会改变原有底层数组索引为3的元素的值Banana。不过在代码中我们限制了slice的容量为1。当我们第一次对slice调用append的时候,会创建一个新的底层数组,这个数组包括2个元素,并将水果Plum复制进来,再追加新水果Kiwi,并返回一个引用了这个底层数组的新切片
range创建了每个元素的副本,而不是直接返回对该元素的引用
一个切片需要24字节的内存:指针字段需要8 字节,长度和容量字段分别需要8字节
命名接口的时候,也需要遵守Go语言的命名惯例。如果接口类型只包含一个方法,那么这个类型的名字以er结尾。
通道用完尽量关闭,否则会阻塞
for ret range chan1{}
之类的语句切片还有第三个参数:
slice[i:j:k]
代表长度为j-i
,容量为k-i
设置切片容量和长度相等的好处:
如果不加第三个索引,由于剩余的所有容量都属于slice,向slice追加Kiwi会改变原有底层数组索引为3的元素的值Banana。不过在代码中我们限制了slice的容量为1。当我们第一次对slice调用append的时候,会创建一个新的底层数组,这个数组包括2个元素,并将水果Plum复制进来,再追加新水果Kiwi,并返回一个引用了这个底层数组的新切片
range创建了每个元素的副本,而不是直接返回对该元素的引用
一个切片需要24字节的内存:指针字段需要8 字节,长度和容量字段分别需要8字节