文章目录
【len】内建函数len返回 v 的长度
func len(v Type) int
内建函数len返回 v 的长度,这取决于具体类型:
数组:v中元素的数量
数组指针:*v中元素的数量(v为nil时panic)
切片、映射:v中元素的数量;若v为nil,len(v)即为零
字符串:v中字节的数量
通道:通道缓存中队列(未读取)元素的数量;若v为 nil,len(v)即为零
【new】内建函数new分配内存
func new(Type) *Type
其第一个实参为类型,而非值。
其返回值为指向该类型的新分配的零值的指针。
案例演示:
package main
import "fmt"
func main() {
var ptr = new(int)
fmt.Printf("变量ptr的类型:%T\n", ptr)
fmt.Printf("变量ptr的值:%v\n", ptr)
fmt.Printf("变量ptr的值(这个值是一个地址)所指向内存的值:%v\n", *ptr)
fmt.Printf("变量ptr的地址:%v\n", &ptr)
}
/*结果:
变量ptr的类型:*int
变量ptr的值:0xc00000e098
变量ptr的值(这个值是一个地址)所指向内存的值:0
变量ptr的地址:0xc000006028
*/
上述案例的内存示意图:
【make】内建函数make分配并初始化一个类型为切片、映射、或通道的对象
func make(Type, size IntegerType) Type
其第一个实参为类型,而非值。
make的返回类型与其参数相同,而非指向它的指针。
其具体结果取决于具体的类型:
切片:size指定了其长度。该切片的容量等于其长度。切片支持第二个整数实参可用来指定不同的容量;它必须不小于其长度,因此 make([]int, 0, 10) 会分配一个长度为0,容量为10的切片。
映射:初始分配的创建取决于size,但产生的映射长度为0。size可以省略,这种情况下就会分配一个小的起始大小。
通道:通道的缓存根据指定的缓存容量初始化。若 size为零或被省略,该信道即为无缓存的。