Pointers 是否可以在Go中传递字符串的指针并使其成为字符串的一部分?

Pointers 是否可以在Go中传递字符串的指针并使其成为字符串的一部分?,pointers,go,slice,dereference,Pointers,Go,Slice,Dereference,所以基本上我想知道在围棋中是否可能,因为我在玩去引用 例如,在下面显示的代码中。指针被传递给函数,我试图返回传递的指针字符串的一个字母,在给定的示例中是H,但切片只能用于字符串。我想知道是否可以使用指针解引用来实现这一点 代码示例: func Test(test *string) { if len(*test) > 0 { *test = *test[:1] } strings.ToUpper(*test) } func main() { st

所以基本上我想知道在围棋中是否可能,因为我在玩去引用

例如,在下面显示的代码中。指针被传递给函数,我试图返回传递的指针字符串的一个字母,在给定的示例中是H,但切片只能用于字符串。我想知道是否可以使用指针解引用来实现这一点

代码示例:

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

func main() {
  str := "hello"
    Test(&str)
  fmt.Print( str)
}
是否可以在Go中传递字符串的指针并使其成为字符串的一部分


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

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

但是,
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'
}

所以基本上,如果不使用return语句,就没有办法实现它?我很好奇,这是否只能用指针解引用来实现。实际上,我不知道你到底想做什么。你们的问题很不清楚,我将字符串指针传递给函数,若字符串不是空的,我将使用slice获取字符串的一个字母。仅使用字符串:
func(str-string)string{}
,但我想使用指针执行此操作dereference@TiPSY真的不知道你在说什么
*test[:1]
不是一个切片,而是一个字符串上的索引表达式,它生成一个字符串而不是切片。传递字符串还是字符串指针并不重要。请澄清问题。