首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Go语言核心编程(7)——语言陷阱

Go语言核心编程(7)——语言陷阱

作者头像
羊羽shine
发布2019-05-29 18:39:47
发布2019-05-29 18:39:47
1.2K00
代码可运行
举报
文章被收录于专栏:Golang开发Golang开发
运行总次数:0
代码可运行

注:本文是《Go语言核心编程》(李文塔/著)个人读书笔记

多指赋值

规则 1 相同类型变量可在末尾带上类型 2 如果不带类型,则进行类型推断 3 多值赋值语句每个变量后面不能带上类型 格式 右边可是一个返回函数表达式,可以是range对map clice 等函数的操作,也可以是类型推断 赋值的左边需要和右边的的值数量一致,从左到右依次赋值

range 复用临时变量

for range 下的迭代变量值是共享的

defer

副作用 defer 可能对返回值的修改 defer 对性能的影响 在定义函数是使用不带返回值名的格式,通过这种方式,defer就不能直接引用返回值的栈区,也就避免了返回值被修改的问题

数组

数组是固定了相同元素类型的数据结构,底层采用连续的内存地址空间存放,数组大小一旦声明就无法改变。 数组的创建方式 1指定大小的显示初始化 2 通过... 由后面的元素格式推断数组大小 3 指定大小,并通过索引值初始化 ,未显示初始化的元素被设置为类型零值 4指定大小但是不显示初始化,数组元素被设置为零值 数组的一切传递都是值拷贝 1数组间的直接赋值 2 数组作为函数参数 3 数组内嵌到struct中

切片

切片创建 1通过数组创建 2 通过make 创建 3 直接声明 切片的数据结构 数据结构有三个成员,分别是指向底层数组的指针、切片的当前大小和底 层数组的大小 。当 !en 增长超过 cap 时,会申请一个更大容量的底层数组,并将数据从老数组复 制到新申请的数组中。

代码语言:javascript
代码运行次数:0
运行
复制
//src/runtime/slice . go
type slice struct {
array unsafe .Pointer
len int
cap int
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.04.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 多指赋值
  • range 复用临时变量
  • defer
  • 数组
  • 切片
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档