加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

【Go】Go语言学习笔记-4-进阶

发布时间:2020-12-16 18:39:32 所属栏目:大数据 来源:网络整理
导读:Go有指针,然后却没有指针运算,目标是修改一个传入函数的参数的值得效率和可能性,因此它们更像是引用而不是C的指针。 1.内存分配 Go有两个内存分配原语,make和new。 new分配内存 new(T)分配了零值填充的T类型的内存空间,并且返回其地址,一个*T类型的

Go有指针,然后却没有指针运算,目标是修改一个传入函数的参数的值得效率和可能性,因此它们更像是引用而不是C的指针。

1.内存分配

Go有两个内存分配原语,make和new。

new分配内存

new(T)分配了零值填充的T类型的内存空间,并且返回其地址,一个*T类型的值。用Go的术语说,它返回了一个指针,指向新分配的类型T的零值。

make分配内存

make(T,args)只能创建slice,map和channel,并且返回一个有初始值(非零)的T类型,而不是*T。

例如

  • make([]int,10,100)分配了100个整数的值,然后用长度10和容量100创建了slice结构指向数组的前10个元素。

  • new([]int)返回指向新分配的内存的指针,而零值填充的slice结构指向nil的slice值。

构造函数与复合声明

有时候零值不能满足需求,必须要有一个用于初始化的构造函数,可以通过复合声明实现。
从复合声明中获取地址,意味着告诉编译器在堆中分配空间,而不是栈中。

2. 定义自己的类型

Go允许定义新德类型,通过关键字type实现,例如type foo int。
创建更复杂的类型需要用到struct关键字。

转换

type类型的转换。

组合

文档里竟然没写完。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读