登录
首页 >  Golang >  Go问答

将结构值压缩为切片

来源:stackoverflow

时间:2024-03-13 12:12:26 237浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《将结构值压缩为切片》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

假设您有这个结构,

type color struct {
    r uint8
    g uint8
    b uint8
    a uint8
}

还有这个切片,

s := []uint8{50, 60, 100, 100}

有没有办法将切片“解压”到结构中? (就像使用扩展运算符或其他东西)

c := color{s...}

我的意思不是这个,

c := Color{s[0], s[1], s[2], s[3]}

解决方案


不幸的是,没有办法做到这一点。如果您想减少写作工作,可能有一个解决方法:

func newcolor(values ...uint8) color {
   return color {
    r: values [0], g: values [1], b: values [2], a: values [3],
   }
}

但是,除非您还添加越界检查,否则这是危险的。您可以添加类似的内容来防止它,但是它可能会给您带来错误的颜色:

if len(values) != 4 { 
   return color {} 
}

然后您可以按照您想要的方式创建颜色:

s := []uint8{50, 60, 100, 100}
color := NewColor(s...)

希望对您有帮助。

好了,本文到此结束,带大家了解了《将结构值压缩为切片》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>