go语言的make函数 go语言常用函数

go语言中实现切片(slice)的三种方式定义一个切片,然后让切片去引用一个已经创建好的数组 。基本语法如下go语言的make函数:
索引1go语言的make函数:切片引用的起始元素位
索引2:切片只引用该元素位之前的元素
例程如下:
在该方法中 , go语言的make函数我们未指定容量cap,这里的值为5是系统定义的 。
在方法一中,可以用arr数组名来操控数组中的元素,也可以通过slice切片来操控数组中的元素 。切片是直接引用数组,数组是事先存在的,程序员是可见的 。
通过 make 来创建切片 , 基本语法如下:
make函数第三个参数cap即容量是可选的,如果一定要自己注明的话,要注意保证cap≥len 。
用该方法可以 指定切片的大小(len)和容量(cap)
例程如下:
由于未赋值系统默认将元素值置为0,即:
数值类型数组:默认值为 0
字符串数组:默认值为 ""
bool数组:默认值为 false
在方法二中,通过make方式创建的切片对应的数组是由make底层维护,对外不可见,即只能通过slice去访问各个元素 。
【go语言的make函数 go语言常用函数】 定义一个切片 , 直接就指定具体数组 , 使用原理类似于make的方式 。
例程如下:
Golang中new和make的区别new是内建函数,作用是初始化一个指向类型的指针,make的作用是slice,map或chan初始化并返回引用,第一个参数是一个类型,第二个参数是长度 。
Golang入门到项目实战 | golang并发变成之通道channel Go提供了一种称为通道的机制,用于在goroutine之间共享数据 。当您作为goroutine执行并发活动时,需要在goroutine之间共享资源或数据 , 通道充当goroutine之间的管道(管道)并提供一种机制来保证同步交换 。
根据数据交换的行为,有两种类型的通道:无缓冲通道和缓冲通道 。无缓冲通道用于执行goroutine之间的同步通信,而缓冲通道用于执行异步通信 。无缓冲通道保证在发送和接收发生的瞬间两个goroutine之间的交换 。缓冲通道没有这样的保证 。
通道由make函数创建,该函数指定chan关键字和通道的元素类型 。
这是创建无缓冲和缓冲通道的代码块:
语法
使用内置函数make创建无缓冲和缓冲通道 。make的第一个参数需要关键字chan , 然后是通道允许交换的数据类型 。
这是将值发送到通道的代码块需要使用-运算符:
语法
一个包含5个值的缓冲区的字符串类型的goroutine1通道 。然后我们通过通道发送字符串“Australia” 。
这是从通道接收值的代码块:
语法
- 运算符附加到通道变量(goroutine1)的左侧 , 以接收来自通道的值 。
在无缓冲通道中,在接收到任何值之前没有能力保存它 。在这种类型的通道中,发送和接收goroutine在任何发送或接收操作完成之前的同一时刻都准备就绪 。如果两个goroutine没有在同一时刻准备好 , 则通道会让执行其各自发送或接收操作的goroutine首先等待 。同步是通道上发送和接收之间交互的基础 。没有另一个就不可能发生 。
在缓冲通道中,有能力在接收到一个或多个值之前保存它们 。在这种类型的通道中,不要强制goroutine在同一时刻准备好执行发送和接收 。当发送和接收阻塞时也有不同的条件 。只有当通道中没有要接收的值时 , 接收才会阻塞 。仅当没有可用缓冲区来放置正在发送的值时,发送才会阻塞 。
实例
运行结果
Go语言中new和 make的区别详解1、new go语言的make函数的主要特性
首先 new 是内建函数go语言的make函数,定义也很简单go语言的make函数:
func new(Type) *Type
内建函数 new 用来分配内存 , 第一个参数是一个类型,不是一个值,返回值是一个指向新分配类型零值的指针
实现一个类似 new 的功能go语言的make函数:
func newInt() *int {
var i int
return i
}
someInt := newInt()
函数的功能跟 someInt := new(int) 一模一样 。定义 new 开头的函数时 , 出于约定也应该返回类型的指针 。
2、make 的主要特性
make 也是内建函数,定义比 new 多go语言的make函数了一个参数,返回值也不同:
func make(Type, size IntegerType) Type
内建函数 make 用来为 slice , map 或 chan 类型分配内存和初始化一个对象(注意:只能用在这三种类型上),跟 new 类似,第一个参数也是一个类型而不是一个值,跟 new 不同的是,make 返回类型的引用而不是指针,而返回值也依赖于具体传入的类型,具体说明如下:
Slice: 第二个参数 size 指定了长度,容量和长度相同 。
可以传入第三个参数来指定不同的容量值 , 但必须不能比长度值小 。
比如 make([]int, 0, 10)
Map: 根据 size 大小来初始化分配内存 , 不过分配后的 map 长度为 0,如果 size 被忽略了 , 那么会在初始化分配内存时分配一个小尺寸的内存
Channel: 管道缓冲区依据缓冲区容量被初始化 。如果容量为 0 或者忽略容量,管道没有缓冲区 。
3、总结
new 的作用是初始化一个指向类型的指针(*T),make 的作用是为 slice , map 或 chan 初始化并返回引用(T) 。
关于go语言的make函数和go语言常用函数的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读