当前位置: 首页 > 面试题库 >

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

莘聪
2023-03-14
问题内容

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

游乐场链接:

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:]
}

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

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

playground



 类似资料:
  • 问题内容: 我有以下代码: 但是我想将一个指向字节切片的指针传递给另一个函数,并在那里切片,所以类似: 它给我一个错误,我不能在函数参数中使用type 作为类型,并且不能对type进行切片。怎么了?默认情况下切片不是通过引用传递的吗?我试图在没有指针的情况下执行此操作,但是它不起作用- 正在复制数组。我怎样才能做到这一点? 问题答案: 该错误来自您尚未发布的拼写错误(您尝试传递一个切片而不是指向的

  • 问题内容: 我一直遵循本文中@tulskiy的建议,通过JNI将Java中的c指针存储在Java中通过JNI在C和Java之间传递指针 诀窍是将指针转换为jlong​​。所以从c我有 我返回一个jlong​​(始终为64位),因为我希望我的代码在64位和32位系统上都能工作。64位计算机上64位指针在内存中的大小为64,而在32位计算机上,内存中指针的大小为32位。 问题是在32位计算机上,我收到

  • 请考虑以下示例: 我希望将值传递到中,作为哑输入组件的道具。然而,它从不重新呈现它。

  • 我有我的函数,我正在那里填充,但调用这个函数后没有填充,但我知道它是在这个函数中填充的,因为我有那里的输出代码。 我像这样传递指针 为什么它不起作用?谢谢

  • 问题内容: 假设我想将指针传递给函数并通过这样做来更改该指针指向的结构的值。我通常通过取消引用指针来做到这一点: 我的问题是,为什么这段代码不会改变价值 而这个做: 问题答案: 因为这一行: 只需为变量分配一个新的指针值即可。在函数内部,只是一个局部变量。通过向分配任何新值,您只是在更改局部变量的值,而 不是 指向的值。 中的局部变量与中的局部变量无关。如果你改变的,它不会改变的(这也不会改变尖结

  • 本文向大家介绍为什么我们在C ++中通过引用传递指针?,包括了为什么我们在C ++中通过引用传递指针?的使用技巧和注意事项,需要的朋友参考一下 如果需要修改指针而不是指针指向的对象,则可以按引用传递指针。 这是如何通过引用传递指针的示例- 示例 输出结果