创建具有空字段的结构体的一行代码?

huangapple go评论78阅读模式
英文:

One-liner for creating struct with blank fields?

问题

我有一个带有空白字段的结构体:

type Foo struct {
    a uint32
    b uint32
    c uint32
    _ uint32 // 填充字段
}

对于没有空白字段的结构体,我喜欢使用一行初始化的方式。但是,对于带有空白字段的类型,似乎无法这样做:

Foo{1,2,3}   // 结构体初始化器中的值过少
Foo{1,2,3,0} // 无法引用空白字段或方法
Foo{1,2,3,_} // 无法使用 _ 作为值

为了保持简洁的语法,我必须给未使用的字段命名吗?

英文:

I have a struct with blank fields:

type Foo struct {
    a uint32
    b uint32
    c uint32
    _ uint32 //padding
}

For structs without blank fields I enjoy using one-liner initialization. But, I cannot seem to do this for types with blank fields:

Foo{1,2,3}   // too few values in struct initializer
Foo{1,2,3,0} // cannot refer to blank field or method
Foo{1,2,3,_} // cannot use _ as value

To keep the nice syntax, must I name the unused field?

答案1

得分: 3

你可以指定字段

f := Foo{a: 1, b: 2, c: 3}
fmt.Println(f) //{1 2 3 0}
英文:

You could specify the fields

f := Foo{a: 1, b: 2, c: 3}
fmt.Println(f) //{1 2 3 0}

huangapple
  • 本文由 发表于 2015年2月18日 06:03:39
  • 转载请务必保留本文链接:https://go.coder-hub.com/28571984.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定