pointers - 在Go中是否可以传递字符串指针并使其成为字符串 slice ?

标签 pointers go slice dereference

所以基本上我想知道在GO中是否可行,因为我正在玩Dereference。

例如,如下所示的代码。指针传递给函数,并且我试图返回所传递的指针字符串的一个字母,在给定的示例中为H,但是slice只能与字符串一起使用。我想知道是否可以使用指针取消引用来执行此操作。

代码示例:

func Test(test *string) {
    if len(*test) > 0 {
        *test = *test[:1]
    }
    strings.ToUpper(*test)
}

func main() {
  str := "hello"
    Test(&str)
  fmt.Print( str)
}

最佳答案

您需要将test放在方括号中,即首先取消引用指针,然后对其进行 slice 。

然后,Test函数仍然不会返回大写的H,因为ToUpper接受并返回一个值。因此,您还需要将ToUpper的输出重新分配给*test:

func Test(test *string) {
    if len(*test) > 0 {
        *test = (*test)[:1] // bracketed `test`
    }
    *test = strings.ToUpper(*test) // reassign to `test`
}

func main() {
  str := "hello"
    Test(&str)
  fmt.Print(str) // Prints 'H'
}

Go Play example

关于pointers - 在Go中是否可以传递字符串指针并使其成为字符串 slice ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62344506/

相关文章:

python - Numpy使用切片修改多个值二维数组

c - argv 中指向字符串的指针是否可修改?

c++ - C++ 中指向对象的指针——堆栈/堆上有什么?

c++ - std::unique_ptr::get 有什么意义

testing - 只在测试文件中引用的go测试代码会被编译成二进制文件吗?

go - 有没有办法在 Go 中使用动态类型 slice ?

c - 这个指针有什么问题?

go - 从 Go 中的 main 导入本地包

ubuntu - 在 $PATH 中找不到 Unix 可执行文件

python - Numpy 搜索和切片 3D 数组