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

Is it possible in Go to pass pointer of string and make it slice of string?

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

例如在下面显示的代码中。指针被传递给函数,我试图 return 传递指针字符串的一个字母,在给定的示例中是 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)
}

Is it possible in Go to pass pointer of string and make it slice of string?

是:func (ps *string) []string { return []string{*ps} }

你需要把test放在括号里,即先解引用指针,然后切片。

那么 Test 函数仍然不会 return 大写 H,因为 ToUpper 接受并且 return 是一个值。因此,您还需要将 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