内容简介:把平时的一些笔记放上来,主要是一些比较小的问题,这里是关于golang中的类型中需要记录的小知识点。【1】可以是某些编译器能计算出结果的表达式【2】当常量的不指定类型和值,默认和上一行的常量的类型和值相同
把平时的一些笔记放上来,主要是一些比较小的问题,这里是关于golang中的类型中需要记录的小知识点。
常量
【1】可以是某些编译器能计算出结果的表达式
- unsafe.Sizeof
- len
- cap
const { ptrSize = unsafe.Sizeof(unintptr(0)) strSize = len("Hello") }
【2】当常量的不指定类型和值,默认和上一行的常量的类型和值相同
const { x uint6 = 120 y s = "abc" z }
枚举
关键字:iota
const { a = iota // 0 默认为0 b // 1 默认递增1 c = 100 // 100 手动设置数据 d // 100 e = iota // 4 需要显式调用iota,计算c、d的位置 d // 5 }
展开
- 变量和常量的区别:变量在运行时分配内存空间,常量通常会被编译器在预处理阶段直接展开,作为指令数据直接使用。数字常量不分配地址空间;
- 常量陷阱:不指定类型的常量可以给其他常量赋值,显式指定值的常量不可以给其他常量赋值。
引用类型
特指:slice、map、chaneel
new和make的区别
- new按指定类型分配内存空间
- make按照一定的规则(创建函数或指令)构建目标,完成相关内存分配和属性初始化
自定义类型
定义:使用type创建用户的自定义类型,包括基于现有的基础类型、结构体、函数创建新的类型。
注意:即使type指定了新的类型,只能表明有相同的数据结构,两个类型间没有任何关系,不能视作别名
未命名类型
具有相同声明的未命名类型视作同一种类型
- 相同基类型的指针
- 相同元素类型和长度的数组(array)
- 相同元素类型的切片(slice)
- 相同键值类型的字典(map)
- 相同操作类型和方向的通道(channel)
- 相同字段序列的结构体,注意的是struct不相同也视作不同(struct)
- 相同签名【参数和返回值相同】的函数(func)
- 具有相同方法集【方法名和方法签名】的接口
未命名类型转化规则:
- 所属的类型相同
- 基础类型相同,其中一个是未命名类型
- 数据类型相同,将双向通道赋值给单向通道,且其中一个为未命名类型
- 将默认值nil赋值给切片、字典、通道、指针、函数、接口
- 对象实现了目标接口
指针类型
可以通过unsafe.Pointer转换成uintptr进行指针加减法运算,但可能造成非法访问。
【区别】
Pointer类似void 的万能指针,可用来转换指针类型,void 能安全持有对象成员,uintptr只是一种整数类型,不引用目标对象,无法阻止垃圾回收对象内存。
零长度对象地址
是否相等和版本实现有关,不等于nil,即使长度为0,对象依然合法存在,拥有合法的内存地址,和nil不一样。在runtime/malloc.go中有个zerobase的全局变量,通过mallocgc分配的0长度的对象都使用这个地址。在栈上分配,为调用mallocgc函数。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- go语言嵌套类型的使用细节
- Go 语言中关于断行规则的一个细节
- 不谈技术细节,自然语言处理能做些什么
- D 语言(DLang)2.089.1 发布,细节改进提升可用性
- Go 语言社区系统 bbs-go 3.2.1 版本发布,多处细节优化
- MQTT Essential 细节笔记总结(深入理解MQTT细节)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
从莎草纸到互联网:社交媒体2000年
[英]汤姆·斯丹迪奇 / 林华 / 中信出版社 / 2015-12 / 58.00元
【内容简介】 社交媒体其实并不是什么新鲜的东西。从西塞罗和其他古罗马政治家用来交换信息的莎草纸信,到宗教改革、美国革命、法国大革命期间印制的宣传小册子,过去人类跟同伴交流信息的方式依然影响着现代社会。在报纸、广播和电视在散播信息上面统治了几十年后,互联网的出现使社交媒体重新变成人们与朋友分享信息的有力工具,并推动公共讨论走向一个新的模式。 汤姆•斯丹迪奇在书中提醒我们历史上的社交网络其......一起来看看 《从莎草纸到互联网:社交媒体2000年》 这本书的介绍吧!