Golang-和-
目录
Golang |* 和 &
在 Golang(Go 语言)中,
*
和
&
主要用于指针操作,它们的作用如下:
1. & (取地址符)
&
用于获取变量的内存地址(即指针)。
package main
import "fmt"
func main() {
a := 10
p := &a // 获取变量 a 的地址,p 是一个指向 a 的指针
fmt.Println("a 的值:", a)
fmt.Println("a 的地址:", &a)
fmt.Println("p 的值(即 a 的地址):", p)
}输出示例(地址因环境不同而变化):
a 的值: 10
a 的地址: 0xc000014088
p 的值(即 a 的地址): 0xc0000140882. * (指针解引用)
*
用于指针解引用,即通过指针访问指针指向的值。
package main
import "fmt"
func main() {
a := 10
p := &a // p 是指向 a 的指针
fmt.Println("p 指向的值:", *p) // 解引用 p,获取 a 的值
*p = 20 // 通过指针修改 a 的值
fmt.Println("修改后 a 的值:", a)
}输出:
p 指向的值: 10
修改后 a 的值: 203. * 还用于声明指针类型
在声明指针变量时,
*
用于指定变量是指针类型。例如:
var p *int // 声明一个 int 类型的指针变量 p只有在解引用时,
*p
才表示指针指向的值。
4. 总结区别
| 符号 | 作用 |
|---|---|
& | 取地址,获取变量的内存地址 |
* | 解引用指针,获取指针指向的值,也用于声明指针类型 |
如果你对指针的理解还不太清楚,可以思考:
&a相当于 “我要 a 的地址”。*p相当于 “我要 p 指向的值”。
希望这能帮助你理解
*
和
&
的区别!