golang中 &和*的区别
-
&
用于获取地址 -
*
用于声明时,就是声明指针类型,
用于解引用时,就是解引用指针。
&
是取地址操作符,用于获取变量的内存地址。例如:
package main
import "fmt"
func main() {
var num int = 10
// 获取 num 的地址并赋值给 p
p := &num
fmt.Printf("num 的地址是:%p\n", p)
}
-
*
有两种主要用途:- 当用于声明变量时,如
*Student
,表示定义一个指向Student
结构体的指针类型。例如:
- 当用于声明变量时,如
package main
import "fmt"
type Student struct {
name string
age int
}
func main() {
// 创建一个 Student 结构体实例
s := Student{name: "Alice", age: 20}
// 创建一个指向 Student 结构体的指针
var ps *Student = &s
fmt.Printf("ps 指向的 Student 实例的 name 字段值为:%s\n", ps.name)
}
- 当用于指针解引用时,
*
可以获取指针所指向的值。例如:
package main
import "fmt"
func main() {
var num int = 10
p := &num
// 解引用指针 p,获取其指向的值并修改
*p = 20
fmt.Println(num)
}
标签:name,区别,fmt,golang,num,Student,main,指针
From: https://www.cnblogs.com/zhuoss/p/18666334