簡體   English   中英

將切片解包到結構值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM