微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Golang 的 Range Loop 中创建对象数组

如何解决在 Golang 的 Range Loop 中创建对象数组

我是 Golang 的新手,正在尝试各种东西。我有两个要求,

  1. 打印数组中值的出现次数 - 完成。
  2. 创建键的键值和数组中的值 - 仍在努力。

让我分享一下我到目前为止所做的事情。我有字符串数组

var StringsArray :=["Person1","Person2","Person3","Person4","Person1","Person2"]

我正在循环这个,

for _,name := range StringsArray {
   Count := make(map[string]int)
   Words []string
   type MyStruct struct {
      Name string `json:"name" bson:"name" `
      Count int  `json:"count" bson:"count" `
   }
   _,exist := Count[name]
   if exist {
      Count[name] += 1
   } else {
      Count[name] = 1
   }
   if name != "" {
      fmt.Println("m",name,Count)
      WordsArray := []MyStruct {
         {
           name: name,count: Count[name],}
      }
      Words = append(Words,WordsArray)
   }
}

我期望输出为对象数组,例如

[{name:"Person1",value:2},{name:"Person2",{name:"Person3",value:1},{name:"Person4",value:1}]

但我没有得到预期的输出。下面是我的输出

[
 {Person2 2}
]

其他值被覆盖。

对此的任何帮助表示高度赞赏。

提前致谢。

解决方法

类似的东西,而不是编组到 json

package main

import "fmt"

var StringsArray = []string{"Person1","Person2","Person3","Person4","Person1","Person2"}

type MyStruct struct {
    Name string
    Count int
}

func main() {
    mySlice := []MyStruct{}

    for i,name := range StringsArray {
        fmt.Println(name,i)
        mySlice = append(
            mySlice,MyStruct{
                Name: name,Count: i,})
        
    }
    fmt.Println(mySlice)
}

你可以在这里试试 - go playground

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。