包含结构的golang类型数组
我试图创建一个伪队列结构,并在其中插入jobs结构。我做错了什么包含结构的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) } 上面的代
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"})