Ahmed Magdy
Ahmed Magdy

Reputation: 516

Error while creating array of struct and initializing elements in it

i'm trying to create array with two elements in it but i got an error

 type TODO struct {
    Number             int
    Task               string
}

func main() {
    var todoArr [2]TODO

    fE := &TODO{Number: 10, Task: "Task1"}
    sE := &TODO{Number: 11, Task: "Task2"}
    todoArr[0] = fE
    todoArr[1] = sE
}

cannot use fE (type *TODO) as Type TODO in assignment

i don't know why also i want to know if there is a short form to declare and initialize array/slice in golang like this

[]TODO{&TODO{Number: 10, Task: "Task1"}, &TODO{Number: 11, Task: "Task2"}}

Upvotes: 0

Views: 40

Answers (1)

Thundercat
Thundercat

Reputation: 121049

Change the code to declare an array of pointer to TODO:

var todoArr [2]*TODO

fE := &TODO{Number: 10, Task: "Task1"}
sE := &TODO{Number: 11, Task: "Task2"}
todoArr[0] = fE
todoArr[1] = sE

or change the code to put TODO values in the array:

var todoArr [2]TODO

fE := TODO{Number: 10, Task: "Task1"}
sE := TODO{Number: 11, Task: "Task2"}
todoArr[0] = fE
todoArr[1] = sE

You can declare a slice using literal syntax as

[]*TODO{&TODO{Number: 10, Task: "Task1"}, &TODO{Number: 11, Task: "Task2"}}

or

[]TODO{TODO{Number: 10, Task: "Task1"}, TODO{Number: 11, Task: "Task2"}}

depending on your choice of using pointers or not.

Upvotes: 1

Related Questions