数据:匿名结构体

匿名结构体

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, 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值