[英]Unpack slice to struct values
假設你有這個結構,
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...)
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.