英文:
golang type array containing structs
问题
我正在尝试创建一个伪队列结构,并在其中插入作业结构。我做错了什么?
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)
}
上面的代码报错:
无法将类型为 Job 的 job 分配给类型为 Queue 的 queue[0]
英文:
I am trying to create a pseudo queue structure and insert jobs structs inside it. What am I doing wrong ?
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)
}
The code above is throwing:
> cannot use job (type Job) as type Queue in assignment
答案1
得分: 5
我认为问题出在这里:
var queue []Queue
这里的queue
是一个Queue
的切片,或者说是一个Job
的切片的切片。所以不可能将其第一个元素的值赋给Job
。
尝试一下:
var queue Queue
英文:
I think problem is here:
var queue []Queue
Here queue
is a slice of Queue
or slice of slice of Job
. So it's impossible to assign first its element value of Job
.
Try:
var queue Queue
答案2
得分: 4
你不需要一个队列的切片,也不应该对一个空切片进行索引。
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)
}
英文:
You don't need a slice of queues, and you should not index an empty slice.
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)
}
答案3
得分: 0
[]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"})
英文:
[]TypeName
is definition of slice of TypeName
type.
Just as it said:
var queue []Queue
is a slice of instances of type Queue
.
q := Queue{Job{"test", "http://google.com"}, Job{"test", "http://google.com"}}
Definitely it is not what you want. Instead of it you should declare var queue Queue
:
var queue Queue
q := append(queue, Job{"test", "http://google.com"}, Job{"test", "http://google.com"})
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论