gpt4 book ai didi

go - 将 slice 解包到结构值

转载 作者:行者123 更新时间:2023-12-01 22:41:28 25 4
gpt4 key购买 nike

假设你有这个结构,

type Color struct {
R uint8
G uint8
B uint8
A uint8
}
而这片,
s := []uint8{50, 60, 100, 100}
有没有办法将 slice “解包”到结构中? (例如使用扩展运算符或其他东西)
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...)
希望对您有所帮助。

关于go - 将 slice 解包到结构值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62491805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com