如果考虑在数组、切片、map等复合对象中使用指针和值,比如:
很多开发者会认为b会更高效 , 但是被传递的都是一个切片的拷贝,切片本身就是一个引用,所以这里被传递的其实没有什么区别 。
对于指针和地址值的使用,大家需要牢记的一点就是go数据传递的不可变性,活学活用此特点,在无状态函数中此特性非常有用 。
golang-指针类型 tips: *号 , 可以指向指针类型内存地址上的值,号 , 可以获取值类型的内存地址
每一个变量都有内存地址,可以通过变量来操作内存地址中的值,即内存的大小
go语言中获取变量的内存地址方法:通过符号可以获取变量的地址
定义:普通变量存储的是对应类型的值,这些类型就叫值类型
变量b , 在内存中的地址为:0x1040a124,在这个内存地址上存储的值为:156
定义:指针类型的变量存储的是?个地址 , 所以?叫指针类型或引?类型
b 是值类型,它指向的是内存地址上的值
a是指针类型,它指向的是b的内存地址
指针类型定义,语法: var 变量名 *类型
指针类型在定义完成后,默认为空地址,即空指针(nil)
在定义好指针变量后,可以通过***** 符号可以获取指针变量指向的变量
在这里的 *a 等价于 b , 通过修改 *a ,最终修改的是值类型b的值
这里a,d是值类型,b,c是指针类型
d就相当于把a内存地址上值,在内存中从新开辟了一块空间存储 , d和a互不影响
b,c相当于指向了a的内存地址 , 当使用*号引用出内存地址上的变量上 , 修改值得 , a的值也会跟着改变
Golang 指针和结构体于c语言相同,go中也有指针和结构体的概念 。指针表示变量的内存地址,结构体用来存储同一类型的数据 。
定义一个指针变量,将变量a的地址赋给指针变量p 。这样,指针变量p也就指向了变量a所在的内容空间 。
new 函数返回一个指针变量
fmt.scan() 就是传入一个指针变量 。
两种方法都可以使用 。
以上简要介绍了go语言中的指针和结构体 。
【Go参数传递:值类型、引用类型和指针类型】修改参数
值类型
指针类型
引用类型
chan
类型零值
总结 :在Go语言中 , 函数的参数传递只有值传递 ,而且传递的实参都是原始数据的一份拷贝 。如果拷贝的内容是值类型的 , 那么在函数中无法修改原始数据,如果拷贝的内容是指针(或者可以理解为引用类型) , 那么可以在函数中修改原始数据 。
go语言修改指针的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于go 指针赋值、go语言修改指针的信息别忘了在本站进行查找喔 。
推荐阅读
- 在微信公众号看视频安全吗,公众号视频可以看到访客吗
- python批量解压指定文件,python解压到指定文件夹
- 推荐过的休闲小游戏平台,休闲小游戏哪个好玩
- 手机上精品的赛车游戏机,手机推荐的赛车游戏
- linux放jar包命令 jar包怎么在linux执行
- 家里用过的路由器怎么处理,家里多余的路由器
- u盘变成磁盘怎么恢复,优盘变成了磁盘格式怎么打开
- 河北省白酒代理供应平台,河北白酒批发市场在哪里
- mysql为空怎么查 mysql查询结果为空