英文:
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"})
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。


评论