📅  最后修改于: 2023-12-03 14:56:52.010000             🧑  作者: Mango
在编程中,. 和 -> 是两个常见的符号,它们用于访问结构中的字段和方法。在本文中,我们将深入介绍这两种符号的用法和区别。
在结构体中,通过 . 可以直接访问其字段。例如,假设有以下结构体定义:
type Person struct {
Name string
Age int
Address Address
}
我们可以使用 . 来访问这个结构体:
var p Person
p.Name = "Alice"
p.Age = 30
p.Address.City = "Shanghai"
-> 通常用在指向结构体的指针上,访问其字段或方法。
type Person struct {
Name string
Age int
Address Address
}
func (p *Person) SayHi() {
fmt.Printf("Hi, my name is %s, and I am %d years old.\n", p.Name, p.Age)
}
func main() {
var p *Person = &Person{Name: "Bob", Age: 25, Address: Address{City: "Beijing"}}
p.SayHi()
p.Age++
fmt.Printf("Now I am %d years old.\n", p.Age)
}
输出:
Hi, my name is Bob, and I am 25 years old.
Now I am 26 years old.
. 直接访问结构体字段,而 -> 则通过指针来访问结构体字段。
type Person struct {
Name string
Age int
Address Address
}
func main() {
p := Person{Name: "Alice", Age: 30, Address: Address{City: "Shanghai"}}
q := &p
fmt.Println(p.Name, q.Name) // Alice Alice
fmt.Println(p.Age, q.Age) // 30 30
q.Age++
fmt.Println(p.Age, q.Age) // 31 31
}
在上面的例子中,我们通过 q 指针修改了 p 的 Age 字段,因为它们指向的是同一个结构体。
. 和 -> 都是访问结构体字段的符号,. 用在结构体本身上,而 -> 用在结构体指针上。使用时要注意区别。