dsfs64664 2017-04-12 20:49
浏览 25
已采纳

创建结构数组并在其中初始化元素时出错

i'm trying to create array with two elements in it but i got an error

 type TODO struct {
    Number             int
    Task               string
}

func main() {
    var todoArr [2]TODO

    fE := &TODO{Number: 10, Task: "Task1"}
    sE := &TODO{Number: 11, Task: "Task2"}
    todoArr[0] = fE
    todoArr[1] = sE
}

cannot use fE (type *TODO) as Type TODO in assignment

i don't know why also i want to know if there is a short form to declare and initialize array/slice in golang like this

[]TODO{&TODO{Number: 10, Task: "Task1"}, &TODO{Number: 11, Task: "Task2"}}
  • 写回答

1条回答 默认 最新

  • duanmen2189 2017-04-12 20:52
    关注

    Change the code to declare an array of pointer to TODO:

    var todoArr [2]*TODO
    
    fE := &TODO{Number: 10, Task: "Task1"}
    sE := &TODO{Number: 11, Task: "Task2"}
    todoArr[0] = fE
    todoArr[1] = sE
    

    or change the code to put TODO values in the array:

    var todoArr [2]TODO
    
    fE := TODO{Number: 10, Task: "Task1"}
    sE := TODO{Number: 11, Task: "Task2"}
    todoArr[0] = fE
    todoArr[1] = sE
    

    You can declare a slice using literal syntax as

    []*TODO{&TODO{Number: 10, Task: "Task1"}, &TODO{Number: 11, Task: "Task2"}}
    

    or

    []TODO{TODO{Number: 10, Task: "Task1"}, TODO{Number: 11, Task: "Task2"}}
    

    depending on your choice of using pointers or not.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装