在golang中将数组值设置为结构

时间:2015-06-29 00:19:57

标签: go

结构是

type TopicModels struct {
    Topics []string
}

我想将值设置为此结构,如下面的方法

var topics [2]string
topics[0] = "Sport Nice"
topics[1] = "Nice Sport"
return &TopicModels{Topics: topics}, nil

然而,它告诉我

 cannot use topics (type [2]string) as type []string in field value

如何更改代码以使其正确?

2 个答案:

答案 0 :(得分:3)

如错误消息所示,Topics字段的类型为[]string(字符串的任意长度片段),topics变量的类型为[2]string(字符串)数组长度2)。这些类型不同,因此您会收到错误。

有两种方法可以解决这个问题:

  1. 使topics成为切片:

    topics = make([]string, 2)
    topics[0] = "Sport Nice"
    ...
    
  2. 使用slice expression创建代表数组的切片:

    ...
    return &TopicModels{Topics: topics[:]}, nil
    

答案 1 :(得分:1)

您也可以使用array literal执行此操作...

topics := [2]string{"Sport Nice","Nice Sport"}
return &TopicModels{Topics: topics}, nil

这是关于数组和切片的一个很好的博客文章... http://blog.golang.org/go-slices-usage-and-internals

编辑

忘了提你需要改变结构

type TopicModels struct {
    Topics [2]string
}