我正在尝试从一个函数返回一个字符串数组,但是它仅输出最后一个索引位置值。这是我的代码和输出。
package main
import (
"fmt"
)
func main() {
myquote := varFunc("Go", "Bunny", "Let's", "Change", "ourself")
fmt.Println("here also:", myquote)
}
func varFunc(s ...string) string {
fmt.Println(s)
fmt.Printf("%T\n", s)
quote := ""
for _, v := range s {
quote = v
fmt.Println("init: ", quote)
}
fmt.Println("is there: ", quote)
return quote
}
游乐场:https://play.golang.org/p/jyZDL5oPmcz
我的输出:
[Go Bunny Let's Change ourself]
[]string
init: Go
init: Bunny
init: Let's
init: Change
init: ourself
is there: ourself
here also: ourself
Program exited.
答案 0 :(得分:3)
因为您正在用=
运算符覆盖最后一个值。如果我正确理解,您正在尝试将数组打印为单个字符串。将+=
符号应用于qoute
,它应该对您有用。
package main
import (
"fmt"
)
func main() {
myquote := varFunc("Go", "Bunny", "Let's", "Change", "ourself")
fmt.Println("here also:", myquote)
}
func varFunc(s ...string) string {
fmt.Println(s)
fmt.Printf("%T\n", s)
quote := ""
for _, v := range s {
quote += v + " "
fmt.Println("init: ", quote)
}
fmt.Println("is there: ", quote)
return quote
}
答案 1 :(得分:2)
您的代码返回quote
的最后一个值,它是字符串数组s
上一次迭代的值。
如果您需要返回字符串数组s
,请返回它。不好意思,请问我。
func varFunc(s ...string) []string {
fmt.Println(s)
fmt.Printf("%T\n", s)
quote := ""
for _, v := range s {
quote = v
fmt.Println("init: ", quote)
}
fmt.Println("is there: ", quote)
return s
}