如何从golang中的结构数组中检索元素数组?
How to retrieve array of elements from array of structure in golang?
我是 golang 的新手,卡在了这里。我有一个结构数组:
Users []struct {
UserName string
Category string
Age string
}
我想从此结构数组中检索所有用户名。因此,输出类型为:
UserList []string
我知道使用循环手动检索元素并从中构造数组的蛮力方法。还有其他方法吗?
不,go 没有像 python 或 ruby 那样提供很多辅助方法。所以你必须遍历结构数组并填充你的数组。
不,循环是要走的路。
这是一个工作示例。
package main
import "fmt"
type User struct {
UserName string
Category string
Age int
}
type Users []User
func (u Users) NameList() []string {
var list []string
for _, user := range u {
list = append(list, user.UserName)
}
return list
}
func main() {
users := Users{
User{UserName: "Bryan", Category: "Human", Age: 33},
User{UserName: "Jane", Category: "Rocker", Age: 25},
User{UserName: "Nancy", Category: "Mother", Age: 40},
User{UserName: "Chris", Category: "Dude", Age: 19},
User{UserName: "Martha", Category: "Cook", Age: 52},
}
UserList := users.NameList()
fmt.Println(UserList)
}
不,不是开箱即用的。
但是,有一个 Go
包,其中有很多辅助方法。
https://github.com/ahmetb/go-linq
如果你导入这个你可以使用:
From(users).SelectT(func(u User) string { return u.UserName })
此包基于 C# .NET LINQ
,非常适合此类操作。
我是 golang 的新手,卡在了这里。我有一个结构数组:
Users []struct {
UserName string
Category string
Age string
}
我想从此结构数组中检索所有用户名。因此,输出类型为:
UserList []string
我知道使用循环手动检索元素并从中构造数组的蛮力方法。还有其他方法吗?
不,go 没有像 python 或 ruby 那样提供很多辅助方法。所以你必须遍历结构数组并填充你的数组。
不,循环是要走的路。
这是一个工作示例。
package main
import "fmt"
type User struct {
UserName string
Category string
Age int
}
type Users []User
func (u Users) NameList() []string {
var list []string
for _, user := range u {
list = append(list, user.UserName)
}
return list
}
func main() {
users := Users{
User{UserName: "Bryan", Category: "Human", Age: 33},
User{UserName: "Jane", Category: "Rocker", Age: 25},
User{UserName: "Nancy", Category: "Mother", Age: 40},
User{UserName: "Chris", Category: "Dude", Age: 19},
User{UserName: "Martha", Category: "Cook", Age: 52},
}
UserList := users.NameList()
fmt.Println(UserList)
}
不,不是开箱即用的。
但是,有一个 Go
包,其中有很多辅助方法。
https://github.com/ahmetb/go-linq
如果你导入这个你可以使用:
From(users).SelectT(func(u User) string { return u.UserName })
此包基于 C# .NET LINQ
,非常适合此类操作。