如何从Golang中的结构数组中检索元素数组?

我是golang的新手,因此被困在这里。 我有一个结构数组:</ p>

 用户[] struct {
用户名字符串
类别字符串
年龄字符串
}
</ code> </ pre >

我想从此结构数组中检索所有用户名。 因此,输出的类型为:</ p>

  UserList [] string 
</ code> </ pre>

我知道 使用循环手动检索元素并从中构造一个数组。 还有其他方法吗?</ p>
</ div>

展开原文

原文

I am new to golang, and got stuck at this. I have an array of structure:

Users []struct {
   UserName string 
   Category string
   Age string
}

I want to retrieve all the UserName from this array of structure. So, output would be of type:

UserList []string 

I know the brute force method of using a loop to retrieve the elements manually and constructing an array from that. Is there any other way to do this?

3个回答



不是,循环是可行的方法。</ p>

这是一个可行的示例。</ p >

 包main 

import“ fmt”

type User struct {
UserName string
Category string
Age int
}

type Users [] User

func(u个用户)NameList()[] string {
var list [] string
_,用户:=范围u {
list = append(list,user.UserName)
}
返回列表
}

func main(){
users:= Users {
User {UserName:“ Bryan”,Category:“ Human”,Age:33},
User {UserName:“ Jane” ,类别:“ Rocker”,年龄:25},
用户{UserName:“ Nancy”,类别:“母亲”,年龄:40},
用户{UserName:“ Chris”,类别:“ Dude”,年龄 :19},
User {UserName:“ Martha”,Category:“ Cook”,Age:52},
}

UserList:= users.NameList()

fmt.Println(UserList)

}
</ code> </ pre>
</ div>

展开原文

原文

Nope, loops are the way to go.

Here's a working example.

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)
}

dpq755012465
dpq755012465 它仍然是Go语法的一部分,经常使用,并且在阅读Go代码时必须了解它。 它不太明确,但我认为值得一提,特别是对于刚接触Go的人。
4 年多之前 回复
duan47676379
duan47676379 炫耀...由于问题来自刚接触Go的人,所以我想尽可能明确。 (混乱的可能性很小)
4 年多之前 回复
dongyan1974
dongyan1974 较短的版本:play.golang.org/p/FlhgEWbC_8
4 年多之前 回复



否,go并没有提供许多像python或ruby这样的帮助器方法。 因此,您必须遍历结构数组并填充数组。</ p>
</ div>

展开原文

原文

No, go does not provide a lot of helper methods as python or ruby. So you have to iterate over the array of structures and populate your array.



不,不是开箱即用。</ p>

但是,有一个 Go </ code>软件包,其中包含许多辅助方法。
https://github.com / ahmetb / go-linq </ p>

如果导入此文件,则可以使用:</ p>

  From(users).SelectT(  func(u User)字符串{return u.UserName})
</ code> </ pre>

此程序包基于C#.NET LINQ </ code>,非常完美 </ p>
</ div>

展开原文

原文

No, not out of the box.

But, there is a Go package which has a lot of helper methods for this. https://github.com/ahmetb/go-linq

If you import this you could use:

From(users).SelectT(func(u User) string { return u.UserName })

This package is based on C# .NET LINQ, which is perfect for this kind of operations.

dsjojts9734
dsjojts9734 请解释为什么,如果您对答案不满意。
12 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问