在Go中是否可以将字符串的指针传递给它,并使其成为字符串的片断?

问题描述 投票:-3回答:1

所以基本上我想知道在GO中是否可以,因为我在用 Dereference.

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

代码示例。

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

func main() {
  str := "hello"
    Test(&str)
  fmt.Print( str)
}
pointers go slice dereference
1个回答
1
投票

你需要把 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'
}

去玩的例子


1
投票

在围棋中,是否可以将字符串的指针传递给它,并使其成为字符串的片断?

可以。func (ps *string) []string { return []string{*ps} }

© www.soinside.com 2019 - 2024. All rights reserved.