1. 结构体的定义
type Node struct {
field1 type1
filed2 type2
...
}
2.结构体的声明和初始化
type User struct {
name string
age int
sex string
}
// 1.var 定义一个结构体类型的变量
var boyd = User
// 2. 使用结构体字面量的形式来声明一个结构体类型的变量
ben := User {
name: "ben",
age: 32,
sex: "male",
}
// 3. 不使用字段名,给结构体字段赋值
tom := {"tom", 33, "male"} // 这中就需要按照字段的顺序给该结构体的字段赋值
3. 嵌套结构
- 嵌套有名结构体
type User struct {
name string
age int
}
type Admin struct {
person User
level string
}
// 这种嵌套结构体情况下的赋值如下
robin := Admin {
person: User {
name: "robin",
age: 21,
},
level: "administrator,
}
- 嵌套匿名结构体
type User struct {
name string
age int
}
type Admin struct {
level int
User
}
account := Admin {
level: 1,
User{name: "jack", age: 22}
}
- 结构体的成员的访问使用(.)运算符
type User struct {
name string
age int
}
type Admin struct {
level int
User
}
account := Admin {
level: 1,
User{name: "jack", age: 22}
}
root := Admin{}
root.level = 21
root.name = "root"
root.User.age = 21
type User struct {
name string "user name"
age int "user age"
}
4. 方法
- 概念:方法能给用户定义的类型添加新的行为。方法实际上也是函数,只不过是声明时,在关键字func和方法名之间增加了一个参数
type user struct {
name string
age int
}
func (u user) say() {
fmt.Println("hello", u.name)
}
func (u *user) hello() {
fmt.Println("say hello", u.name, u.age)
}
u := user{"bobo", 12}
u.say()
person := &user{"tom", 33}
person.hello()
that's all