3 回答
TA贡献1794条经验 获得超8个赞
TA贡献1725条经验 获得超7个赞
您可以从一个函数返回多个变量:
func A (s string) (string, int) {
a := "hello world"
b := 99
return a, b
}
c, d := A("Hi there.")
我想指出的一件事是,在 Go 中,字符串不是指针。在像 C 这样的语言中,您习惯于将 a 视为stringa char*,但是在 Go 中,astring被视为原始类型,就像您将 an 一样int。
这似乎时不时地让人绊倒,但它实际上非常好,因为你不必担心带有字符串的指针。
如果您发现自己处于想要返回nil字符串的情况(您不能这样做,因为它不是指针),那么您将返回一个空字符串 ( "")。
指针:如果你真的想做指针......
func A (s string) (*string, int) {
a := "hello world"
b := 99
// NOTE: you have to have a variable hold the string.
// return a, &"hello world" // <- Invalid
return a, &b
}
// 'd' is of type *string
c, d := A("Hi there.")
var sPtr *string = d
var s string = *d // Use the * to dereference the pointer
TA贡献1853条经验 获得超18个赞
我把你的代码放在操场上并设法让它工作。我不确定问题出在哪里,为什么它对我不起作用,但可能还有其他原因。无论如何,稍加按摩就可以了:
package main
import (
"fmt"
)
func A (s *string) (*string, int) {
b := 99
return s, b
}
func main() {
r := "Hi there."
var s *string = &r
c, d := A(s)
fmt.Println(*c, d)
}
- 3 回答
- 0 关注
- 111 浏览
添加回答
举报