小编典典

通过传递其指针来更改切片

go

我有一个要使用函数更改的切片(例如,我想删除第一个元素)。我以为可以使用指针,但仍然无法为其编制索引。我究竟做错了什么?

游乐场链接:

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

阅读 181

收藏
2020-07-02

共1个答案

小编典典

您需要使用(*list)

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

或通常更像偶像的另一种方法:

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

playground

2020-07-02