如何从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,非常适合此类操作。