Golang类型数组包含结构体。

huangapple go评论89阅读模式
英文:

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

[]TypeNameTypeName 类型的切片的定义。

就像它所说的那样:

var queue []QueueQueue 类型实例的切片。

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"})

huangapple
  • 本文由 发表于 2017年2月7日 17:48:37
  • 转载请务必保留本文链接:https://go.coder-hub.com/42086547.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定