arrays - 在 Golang 中将指针传递给字符串数组

标签 arrays go

<分区>

我试图将字符串数组传递给函数,打印值,修改它,然后在函数完成时打印字符串数组的值。

这是我的示例代码,它不起作用但展示了我想要实现的目标:

package main
import (
    "fmt"
)
func SendData(a *[]string) {
    fmt.Println(*a)
    *a = *a[:0]
}
func main() {
    var s []string
    s = append(s, "dat","boi")
    SendData(&s)
    fmt.Println(s)
}

这是编译时的错误:cannot slice a (type *[]string)

最佳答案

要修复错误,只需将 *a[:0] 更改为 (*a)[:0] 即可获取指针指向的对象,并且然后 slice 该对象,而不是尝试 slice 指针。

接下来是我的看法:

但是您不需要参数上的 *, slice 包含指向底层数组的指针,因此 slice 的副本指向同一个数组。如果您要为 slice 变量分配另一个东西,我建议返回新的 slice,如下所示:

package main
import (
    "fmt"
)
func SendData(a []string) []string {
    fmt.Println(a)
    a = a[:0]
    return a
}
func main() {
    var s []string
    s = append(s, "dat","boi")
    s = SendData(s)
    fmt.Println(s)
}

关于arrays - 在 Golang 中将指针传递给字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46063746/

相关文章:

hash - Go:这个散列函数的范围如何从 0-32 位?

javascript - 如何检查用户输入数组是否等于特定对象?

Java按扩展名对文件名的String数组进行排序

javascript - 未捕获的类型错误 : Cannot set property 'innerHTML' of null

php - 将 php 数组重新排列为 javascript 数组问题

postgresql - 如何正确扫描 pq 数组?

java - 如何在不创建任何中间字符串的情况下将 char[] 转换为 byte[]

sqlite - Beego raw sql - 类型转换问题

go - 在 Go 中读取一行数字

c - XMPP 服务器的 libxml2 与 expat