通过传递指针来更改切片

时间:2014-09-17 23:55:32

标签: pointers go slice

我想要使用函数更改切片(例如,我想删除第一个元素)。我想用指针,但我仍然无法索引它。我做错了什么?

Playground link:

func change(list *[]int) {
    fmt.Println(*list)
    *list = *list[1:] //This line screws everything up
}

var list = []int{1, 2, 3}

func main() {
    change(&list)
}

1 个答案:

答案 0 :(得分:3)

您需要使用(*list)

func change(list *[]int) {
    *list = (*list)[1:]
}

或者一种通常更具风格的不同方法:

func change(list []int) []int {
    return list[1:]
}

playground