3 回答

TA貢獻1794條經驗 獲得超8個贊

TA貢獻1725條經驗 獲得超8個贊
您可以從一個函數返回多個變量:
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 關注
- 151 瀏覽
添加回答
舉報