dpbz14739 2015-10-09 06:29
浏览 2465
已采纳

如何在golang中创建对象数组?

I have a requirement in which I need to store array of objects in a variable. The objects are of different types. Refer to following example:

 v := [ {"name":"ravi"},
        ["art","coding","music","travel"],
        {"language":"golang"},
        {"experience":"no"}
      ]

Notice the second element is array of string itself. After research, I thought of storing this as interface type like:

 var v interface{} = [ {"name":"ravi"},
                       ["art","coding","music","travel"],
                       {"language":"golang"},
                       {"experience":"no"}
                     ]

Still, I am getting few compilation errors which I am not able to find out.

  • 写回答

2条回答 默认 最新

  • dougu5950 2015-10-09 06:52
    关注

    What you're asking for is possible -- playground link:

    package main
    
    import "fmt"
    
    func main() {
        v := []interface{}{
            map[string]string{"name": "ravi"},
            []string{"art", "coding", "music", "travel"},
            map[string]string{"language": "golang"},
            map[string]string{"experience": "no"},
        }
        fmt.Println(v)
    }
    

    But you probably don't want to be doing this. You're fighting the type system, I would question why you're using Go if you were doing it like this. Consider leveraging the type system -- playground link:

    package main
    
    import "fmt"
    
    type candidate struct {
        name string
        interests []string
        language string
        experience bool
    }
    
    func main() {
        candidates := []candidate{
            {
                name: "ravi",
                interests: []string{"art", "coding", "music", "travel"},
                language: "golang",
                experience: false,
            },
        }
        fmt.Println(candidates)
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵