Go 语言基础:结构体与方法
2 分钟阅读
Go 语言基础:结构体与方法
Go 没有类,但有结构体与方法——这构成了它独特的”面向对象”风格。
定义结构体
package main
import "fmt"
type User struct {
Name string
Age int
}
func main() {
u := User{Name: "sify", Age: 18}
fmt.Println(u.Name)
}
方法:值接收者
func (u User) Greet() string {
return "Hello, " + u.Name
}
方法:指针接收者
需要修改字段或避免拷贝时使用指针接收者:
func (u *User) Birthday() {
u.Age++
}
经验法则:要么全部用值接收者,要么全部用指针接收者,保持一致。
构造函数模式
Go 没有构造函数语法,惯例是提供 NewXxx 函数:
func NewUser(name string, age int) *User {
return &User{Name: name, Age: age}
}
嵌套与组合
用嵌入实现”组合优于继承”:
type Admin struct {
User // 嵌入
Permissions []string
}
下一篇文章将介绍接口与错误处理,这也是本系列的最后一篇。