通过传递其指针来更改切片 [英] Changing a slice by passing its pointer

查看:44
本文介绍了通过传递其指针来更改切片的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a slice that I want to change (for example i want to remove the first element) using a function. I thought to use a pointer, but I still can't index it. What am I doing wrong?

游乐场链接:

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

推荐答案

您需要使用(* list).

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

或通常更趋于成语的另一种方法:

or a different approach that's usually more go idomatic:

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

游乐场

这篇关于通过传递其指针来更改切片的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆