golang 类型本质

我是不是小明 · · 428 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

  在声明一个新类型之后,声明一个该类型的方法之前需要先回答一个问题:这个类型的本质是什么。如果这个类型增加或者删除某个值,是要创建新值还是要更改当前的值?如果是要创建一个新值,该类型的方法就是使用值传递者。如果是修改当前的值就使用指针接受者这个答案会影响程序内部传递这个类型的值得方式:是按照值传递还是按照指针传递。保持传递的一致性很重要。这个背后的原则是,不要只关注某个地方是如何处理的这个值,而是要关注这个值得(本质是什么)?。

5.3.1内置类型

内置类型是由语言提供的一组类型。我们已经见过这些类型,分别是数值类型,字符串类型和布尔类型。这些类型本质上都是(原始的类型)?。因此党对这些值进行增加或者删除的时候,会创建一个新的值。基于这个结论把这些类型的值传递给方法或者函数时,应该传递一个(对应的值得副本)?。

5.3.2引用类型

go语言里的类型有一下几个:切片、映射、通道、接口和函数类型。当声明上述类型的变量的时候,创建的变量被称作(标头值)?。从技术细节上说(字符串也是一种引用类型)?。每个引用类型创建的标头值是一个包含指向底层数据结构的指针。每个引用类型还包括一组特殊的字段,(用于管理底层数据结构)?{管理方式}。因为标头值是为复制而设计的,所以永远不需要共享一个引用类型的值。标头值包含一个指针,因此通过复制来传递一个引用类型的值得副本,本质上就是在共享底层数据。

本文来自:简书

感谢作者:我是不是小明

查看原文:golang 类型本质

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:muxilin131420 备注:入群;或加QQ群:729884609

428 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传