作者:看那个码农
公众号:看那个码农
上期内容介绍了Go语言学习之创建接口|Go主题月
- 什么是接口
- 接口声明的格式
- 实现接口的条件
本篇内容将继续带领大家走进Go语言的世界。
1.本文简介
Go语言学习之&和 *区别
2.什么是“&”
众所周知,在Go语言中变量会将它们的值存储在计算机的随机访问存储器里面,而值的存储位置则是该变量的内存地址,通过使用&表示的地址操作符,可以得到指定变量的内存地址。
例如下面案例所示:
package main
import (
"fmt"
)
func main() {
node :=10
fmt.Printf("node的内存地址为:%v",&node)
}
输出为:
3.什么是“*”
正如上面的案例所示,地址操作符&提供的是变量的内存地址,而*则是提供内存地址指向的值。
例如下面的案例所示:
package main
import (
"fmt"
)
func main() {
node :=10
fmt.Printf("node的内存地址为:%v\n",&node)
address:= &node
fmt.Printf("node的值为:%v",*address)
}
输出为:
与此同时,*也用来表示一个变量是指针类型
例如下面案例所示:
package main
import "fmt"
func main() {
str := new(string)
*str = "Chongqing"
fmt.Println(*str)
}
输出为:
4.“&”与“*”相结合使用的案例
package main
import (
"fmt"
)
func main() {
//准备一个字符串类型
var str = "Hello World"
//对字符串取地址,p的类型为*string
p := &str
//打印p的类型
fmt.Printf("p的类型为:%T\n", p)
//打印p的指针地址
fmt.Printf("p的指针地址为:%p\n", p)
//对指针进行取值操作
value := *p
//取值后的类型
fmt.Printf("value的类型为:%T\n", value)
//指针取值后就是指向变量的值
fmt.Printf("变量value的值为:%v\n", value)
}
输出为:
5.总结
综上我们得到结论:
&是取地址符号 , 即:取得某个变量的地址 , 如:&a。*是指针运算符 , 可以表示一个变量是指针类型 , 也可以表示一个指针变量所指向的存储单元 , 也就是这个地址所存储的值。
如果你觉得这篇内容对你有帮助的话:
1、点赞支持下吧,让更多的人也能看到这篇内容
2、关注公众号:看那个码农,我们一起学习一起进步。