可变的结构域的一部分

Kri*_*urg 1 struct variadic go slice

我的应用程序具有这样的结构片段

type ItemOrder struct {
    ItemId
    ...
}

var items = []*ItemOrder
Run Code Online (Sandbox Code Playgroud)

可变函数接受 ...int

func ItemIds(lang string, ids ...int){
...
Run Code Online (Sandbox Code Playgroud)

如何从items []*ItemOrder切片中获取所有itemIds 并将其提供给可变参数函数?就像是

itemsPB, err := ItemIds("", items[:].itemId)
Run Code Online (Sandbox Code Playgroud)

Abov无法正常工作,因为我没有给切片提供从中提取itemId的位置。

icz*_*cza 5

您必须为ID创建一个新的slice,并使用循环来填充它。没有捷径。

例如:

ids := make([]int, len(items))
for i, item := range items {
    ids[i] = item.ItemId
}
ItemIds("en", ids...)
Run Code Online (Sandbox Code Playgroud)

Go Playground上尝试一下。