对于struct来说,使用&符号可以取得一个struct变量的地址,也就是指针,通过指针可以直接修改struct变量的值。使用&符号可以将一个struct类型的变量转换为指向该struct的指针类型。
而对于Go语言来说,星号(*)用于声明一个指针变量,并且可以通过指针来访问变量的值。通过星号可以解引用一个指针,即获取指针指向的值。
下面是更详细的解释:
type Person struct {
Name string
Age int
}
可以声明一个Person类型的变量,并使用&符号获取其地址:
p := Person{Name: "Alice", Age: 25}
ptr := &p
此时,ptr的类型是*Person,表示一个指向Person类型的指针。
通过指针ptr,可以直接修改p的值:
ptr.Name = "Bob"
这样,p的Name属性就被修改为"Bob"了。
例如,声明一个整型变量和一个整型指针:
var num int
var ptr *int
这里的ptr就是一个指向int类型的指针。
使用星号解引用指针,可以获取指针指向的值:
num = 10
ptr = &num
fmt.Println(*ptr) // 输出:10
这里的*ptr表示获取指针ptr指向的值,即10。
另外,在Go语言中,我们可以通过new关键字创建一个指针,并分配内存空间。例如:
ptr := new(int)
这样,ptr就是一个指向int类型的指针,并且已经分配了内存空间。
总结: 使用&符号可以获取struct变量的地址,即指针,通过指针可以直接修改struct变量的值。使用星号(*)可以声明一个指针变量,并且可以通过指针来访问变量的值。通过使用星号解引用指针,可以获取指针指向的值。
领取专属 10元无门槛券
手把手带您无忧上云