博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
go的值类型和引用类型------重要的概念
阅读量:4140 次
发布时间:2019-05-25

本文共 842 字,大约阅读时间需要 2 分钟。

       在本文中, 我们来简要说一下go的值类型和引用类型, 这很重要。

       在go中,

       值类型有:    int float bool string array等

       引用类型有: slice map channel等

 

       来看个简单的程序:

package mainimport (    "fmt")func main() {    a :=[6]int{1,2,3,4,5,6}    b := a    b[2]=7    fmt.Println(a, b)}

        结果:[1 2 3 4 5 6] [1 2 7 4 5 6]

        可以看到a和b不同, 这很好理解, 继续看程序:

package mainimport (    "fmt")func main() {    a :=[]int{1,2,3,4,5,6}    b := a    b[2]=7    fmt.Println(a, b)}

       结果是:[1 2 7 4 5 6] [1 2 7 4 5 6]

       a和b居然相同, 仅仅由array变成slice, a和b居然就同时变化, 这是为毛毛? 

       要注意, 这里的a是slice, 是引用类型,  b:=a时, 实际上是b对a的引用, 所以a和b可以理解为是同一个东东。 c/c++的学习这尤其需要注意这点。

 

        再来看个程序:

package mainimport (    "fmt")func fun(m map[string]int){    m["good"] = 10000;}func main() {    x := make(map[string]int)    x["good"] = 10        fun(x)    fmt.Println(x)}

        熟悉c/c++的人肯定说, 结果是10, 然而,在go中, 是10000, 看看打印的结果:map[good:10000]

        这是为毛毛呢? 因为在go中, map是引用类型, 所以结果如上, c/c++程序员们, 得注意啊。

 

转载地址:http://odzti.baihongyu.com/

你可能感兴趣的文章
openlayers安装引用
查看>>
js报错显示subString/subStr is not a function
查看>>
高德地图js API实现鼠标悬浮于点标记时弹出信息窗体显示详情,点击点标记放大地图操作
查看>>
初始化VUE项目报错
查看>>
vue项目使用安装sass
查看>>
HTTP和HttpServletRequest 要点
查看>>
在osg场景中使用GLSL语言——一个例子
查看>>
laravel 修改api返回默认的异常处理
查看>>
laravel事务
查看>>
【JavaScript 教程】浏览器—History 对象
查看>>
这才是学习Vite2的正确姿势!
查看>>
7 个适用于所有前端开发人员的很棒API,你需要了解一下
查看>>
25个构建Web项目的HTML建议,你需要了解一下!
查看>>
【web素材】02-10款大气的购物商城网站模板
查看>>
6种方式实现JavaScript数组扁平化(flat)方法的总结
查看>>
49个在工作中常用且容易遗忘的CSS样式清单整理
查看>>
20种在学习编程的同时也可以在线赚钱的方法
查看>>
隐藏搜索框:CSS 动画正反向序列
查看>>
127个超级实用的JavaScript 代码片段,你千万要收藏好(上)
查看>>
【视频教程】Javascript ES6 教程27—ES6 构建一个Promise
查看>>