匿名结构体
type data struct {
x int
y struct {
a int
}
}
func main() {
var s struct {
x int
}
_ = s
}
正常结构体有明确的名字,匿名结构体没有名字。匿名结构体常见的写法是直接用变量和作为字段形成复合结构。
使用匿名结构体
func main() {
s := "abc"
p := (*struct {
ptr uintptr
len int
})(unsafe.Pointer(&s))
fmt.Printf("%#v\n", *p)
}
匿名结构体和匿名函数有些类似,有些时候我们就是想在函数内部很简单的创建匿名结构体,只是简单定义临时使用,没有必要在外面单独定义。
匿名结构体初始化方式
type User struct {
name string
age int
attrs struct {
x int
y int
}
}
func main() {
u := User{
name: "tom",
attrs: struct {
x int
y int
}{
x: 1,
y: 2,
},
}
u2 := User{
name: "tom",
}
u2.attrs.x = 1
u2.attrs.y = 2
fmt.Println(u,