Reputation: 516
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
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