指针与结构体
Go 有指针,但没有指针运算,比 C 安全得多。结构体(struct)是组织数据的核心,配合方法实现"类"的效果。
结构体
type Student struct { Name string; Age int }。零值初始化、字面量初始化。
方法与指针接收者
func (s Student) Intro() string 是方法。指针接收者 func (s *Student) Birthday() 可以修改原值。
指针
& 取地址,* 解引用。大多数场景 Go 自动处理,传 slice/map 本身就是引用。
代码示例
package main
import "fmt"
type Student struct {
Name string
Age int
}
// 值接收者:只读
func (s Student) Intro() string {
return fmt.Sprintf("我是%s,%d岁", s.Name, s.Age)
}
// 指针接收者:可修改
func (s *Student) Birthday() {
s.Age++
}
func main() {
s := Student{Name: "张三", Age: 20}
fmt.Println(s.Intro())
s.Birthday()
fmt.Println("过生日后:", s.Age)
// 指针
p := &s
p.Age = 30
fmt.Println("修改后:", s.Age)
}