0
点赞
收藏
分享

微信扫一扫

【Go】内置函数

今天你读书了吗 2022-05-04 阅读 68
golang

文章目录

【len】内建函数len返回 v 的长度

func len(v Type) int

内建函数len返回 v 的长度,这取决于具体类型:
	数组:v中元素的数量
	数组指针:*v中元素的数量(v为nilpanic)
	切片、映射:v中元素的数量;若v为nillen(v)即为零
	字符串:v中字节的数量
	通道:通道缓存中队列(未读取)元素的数量;若v为 nillen(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为零或被省略,该信道即为无缓存的。
举报

相关推荐

0 条评论