Go struct 匿名字段 - meetbill/chi GitHub Wiki
package main
import "fmt"
type DBAccountInfo struct {
User string
Password string
Socket string
Encryption bool
}
// go 支持只提供类型而不写字段名的方式,也就是匿名字段,也称为嵌入字段
type InstanceConfig struct {
DBAccountInfo // (匿名嵌入)
Name string
}
func main() {
// 1 直接初始化 DBAccountInfo
var config InstanceConfig
config.DBAccountInfo = DBAccountInfo{User: "admin", Password: "123456"}
// {admin 123456 false}
fmt.Println(config.DBAccountInfo)
// amdin
fmt.Println(config.User)
// 123456
fmt.Println(config.Password)
// 2 指定 User 赋值
var config2 InstanceConfig
config2.Name = "demo2"
config2.User = "demoUser"
// demoUser
fmt.Println(config2.User)
//
fmt.Println(config2.Password)
// 3 不能初始化的时候,直接使用 {User: "xxx"} 赋值
config3 := InstanceConfig{User: "admin", Password: "123456"}
// ./demo.go:37:27: unknown field User in struct literal of type InstanceConfig
// ./demo.go:37:42: unknown field Password in struct literal of type InstanceConfig
fmt.Println(config3.User)
}