Greg
Greg

Reputation: 5588

Slices: Trouble appending to a slice in a struct

So, I'm trying to get used to Go! and I've come up to a problem where I try making a new data type "RandomType" which contains a slice.

package main

type RandomType struct {
    RandomSlice []int
}

func main() {
    r := new(RandomType)
    r.RandomSlice = make([]int, 0)
    append(r.RandomSlice, 5)
}

This bit of code yields an error:

append(r.RandomSlice, 5) not used

However for instance if I try with

type RandomType struct {
    RandomInt int
}

func main() {
    r := new(RandomType)
    r.RandomInt = 5
}

this works fine.

Not sure what I'm doing wrong.

Upvotes: 2

Views: 250

Answers (1)

Denys Séguret
Denys Séguret

Reputation: 382454

append doesn't change the slice you provide but builds a new one.

You must use the returned slice :

 r.RandomSlice = append(r.RandomSlice, 5)

More details about append in Effective Go and in the Go blog.

Upvotes: 10

Related Questions