我下面的目标是返回一片 slice ,以便稍后在主函数中对其进行迭代。
当前的行为是,当我在fmt.PrintLn(test)
上打印时,“test”变量将显示 slice 中的每一行,但在fmt.PrintLn(showParsed)
上打印时,“parsed”变量将为空。我该如何解决?
func lsCommand(outString string) []string {
scanner := bufio.NewScanner(strings.NewReader(outString))
var parsed []string
for scanner.Scan() {
s := scanner.Text()
ss := strings.Fields(s)
test := append(parsed, ss...)
fmt.Println(test)
}
return parsed
}
func main() {
ctx := context.Background()
ok, outString, errString := runBashCommandAndKillIfTooSlow(ctx, "ls", 2000*time.Millisecond)
if ok != true {
panic(errString)
}
showParsed := lsCommand(outString)
fmt.Println(showParsed)
}
最佳答案
append
isn't guaranteed修改传递给它的 slice ,因此parsed
不变。仅test
包含ss
的元素。在每次迭代中使用返回值:
var parsed []string
for scanner.Scan() {
s := scanner.Text()
ss := strings.Fields(s)
parsed = append(parsed, ss...)
}
return parsed
关于go - 无法将 slice 附加到现有 slice ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56909038/