Golang学习笔记:高级类型

转载请注明出处:https://blog.csdn.net/sublio/article/details/106478300

全系列目录:https://blog.csdn.net/sublio/article/details/106480267

高级类型

目录

高级类型

数组

切片

map

函数

接口(interface)

结构体

参考文档


 

数组

  1. 长度不可变。

  2. [...]int{1,2,3}不用指定长度,为3。

切片

  1. 内部结构三个元素:指向底层数组某个元素的指针;切片的长度;切片的容量。

  2. 容量cap:从指针指向的元素到底层最后一个元素的元素个数。

  3. 当底层数组不足以完成append的操作,会换一个更长的底层数组(一开始两倍长度?)。

  4. 零值为nil,长度为0,可以直接append操作。

map

  1. 散列表,关联数组。

  2. 零值为nil,长度为0,不可以进行取值等操作。

函数

  1. 指针类型和非指针类型旗下的函数都属于指针类型;指针类型旗下的函数不属于非指针类型(但是能调用)。

  2. 指针类型(包含引用)旗下的函数能改变原值(不管是指针类型调用还是非指针类型调用);非指针类型旗下的函数不能改变原值(不管是指针类型调用还是非指针类型调用)。

  3. 函数返回参数要么全起名,要么全不起名。

接口(interface)

  1. 一种类型对接口的实现和其指针对对接口的实现是分开的,因此上述函数的第1.点就很重要。

  2. 一个接口可以嵌入另一个接口。

结构体

  1. 结构体类型不是引用类型,是值类型

  1. 引用类型的零值是nil,结构体是A{}

  1. 结构体字面量要么全忽略(按顺序),要么全不忽略

  1. 嵌入字段:无名称,用来额外集成字段和方法

  1. 空结构体类型struct{}的变量不占用内存变量,且该类型的所有变量都拥有相同的内存地址,建议用于传递信号(比如在goroutine中使用channel),除非需要传递更多的信息

参考文档

《Go并发编程实战(第2版)》——郝林

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值