Pointers 是否可以在Go中传递字符串的指针并使其成为字符串的一部分?
所以基本上我想知道在围棋中是否可能,因为我在玩去引用 例如,在下面显示的代码中。指针被传递给函数,我试图返回传递的指针字符串的一个字母,在给定的示例中是H,但切片只能用于字符串。我想知道是否可以使用指针解引用来实现这一点 代码示例: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
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]
不是一个切片,而是一个字符串上的索引表达式,它生成一个字符串而不是切片。传递字符串还是字符串指针并不重要。请澄清问题。