包含结构的golang类型数组

包含结构的golang类型数组,go,Go,我试图创建一个伪队列结构,并在其中插入jobs结构。我做错了什么 import "fmt" type Job struct { Type string Url string } type Queue [] Job func main() { var queue []Queue job := Job{"test", "http://google.com"} queue[0] = job fmt.Println(queue) } 上面的代

我试图创建一个伪队列结构,并在其中插入jobs结构。我做错了什么

import "fmt"

type Job struct {
    Type string
    Url string
}

type Queue [] Job

func main() {
    var queue []Queue
    job   := Job{"test", "http://google.com"}

    queue[0] = job
    fmt.Println(queue)
}
上面的代码是:

无法将作业(类型作业)用作分配中的类型队列


我认为问题在于:

var queue []Queue
这里的
队列
队列
的一部分或
作业
的一部分。因此,不可能首先分配其元素值
Job

尝试:


您不需要队列切片,也不应该为空切片编制索引

package main

import "fmt"

type Job struct {
    Type string
    Url string
}

type Queue []Job

func main() {
    var q Queue
    job := Job{"test", "http://google.com"}
    q = append(q, job)
    fmt.Println(q)
}

[]TypeName
TypeName
类型切片的定义

正如上面所说:

var queue[]queue
queue
类型的实例片段

q := Queue{Job{"test", "http://google.com"}, Job{"test", "http://google.com"}}
这肯定不是你想要的。您应该声明
var queue queue
,而不是它:

var queue Queue
q := append(queue, Job{"test", "http://google.com"}, Job{"test", "http://google.com"})

删除
var queue[]queue
中的
[]
,您仍然会得到运行时错误。您是对的,但现在它抛出:恐慌:运行时错误:索引超出范围。我添加了queue=append(queue,job),现在它正在进行上述修改。谢谢。@TheodorB,完全正确,因为
queue
刚刚创建,没有第0个元素。使用
append
添加这样的元素。您检查了slice的
len
cap
函数了吗?还没有,但我会看看。再次感谢你的回答。
var queue Queue
q := append(queue, Job{"test", "http://google.com"}, Job{"test", "http://google.com"})