结构体
代码
//example.go
package test
import "fmt"
//结构体是自定义数据类型
//定义一个结构体
type User struct {
Name string
Id uint32
}
//结构体的继承,两种方法
//代表Account继承自User
type Account struct {
User `user:"名字"` //结构体标签,格式:`key1:"value1" key2:"value2"`
Password string
}
//代表Contact继承自User
type Contact struct {
*User
Name string
Remark string
}
func Struct() {
//声明一个结构体类型的变量
var u1 User = User{
Name: "张三",
}
u1.Id = 10000
//声明一个结构体指针
// var u2 *User = new(User) //第一种声明方式
var u2 *User = &User{
Name: "ggg",
}
(*u2).Id = 20000 //可以简写为u2.Id
(*u2).Name = "李四" //可以简写为u2.Name
fmt.Println(u2.Id, u2.Name)
var a1 = Account{
User: User{
Name: u1.Name,
},
Password: "666",
}
fmt.Println(a1.Name, a1.Id, a1.Password)
var c1 *Contact = &Contact{
User: &User{
Id: u2.Id,
},
Remark: "王麻子",
}
c1.Name = "王五" //c1.User.Name = "王五"(当没有重复字段时,c1.Name == c1.User.Name)
c1.User.Name = "赵六"
fmt.Println("a1=", a1) //a1= {{张三 0} 666}
fmt.Println("c1=", c1) //c1= &{0xc000008048 王五 王麻子}
fmt.Println(c1.User) //&{赵六 20000}
}
//main.go
package main
import "GoExample/test"
func main() {
test.Struct()
}
个人感觉:继承不就是结构体的嵌套吗?