go - 将结构的字段 slice 为可变参数

标签 go struct slice variadic

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

type ItemOrder struct {
    ItemId
    ...
}

var items = []*ItemOrder

还有一个可变参数函数接受...int

func ItemIds(lang string, ids ...int){
...

如何从 items []*ItemOrder slice 中获取所有 itemId 并将其提供给可变参数函数?有点像

itemsPB, err := ItemIds("", items[:].itemId)

Abov 不起作用,因为我没有为 slice 提供从中提取 itemId 的位置。

最佳答案

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

例如:

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

Go Playground 上试试.

关于go - 将结构的字段 slice 为可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56923791/

相关文章:

ruby-on-rails - 清除某个字符后的字符串

go - 如何实现接口(interface),但发布新的API?

go - 为 golang 中的 proto buf 类型编写自定义 Marshall 和 Unmarshaller

go - 带有字符串名称的包选择器

if-statement - Golang 新手,如果 else 不工作,由于某种原因嵌套

zooming - 剪切不同颜色的导航栏(使用 CSS 2.1)

arrays - 如何使用go在没有索引名称的情况下将值存储在hashmap中?

concurrency - 为什么这个程序不能使用 goroutine 打印任何东西?

if-statement - 其他人真的是代码味道吗?编写 Go 条件的惯用方式

结构初始化以满足没有显式方法定义的接口(interface)