Golang - 切片追加(需要时)不起作用



我不明白为什么追加不能按预期工作。 如果键大于长度,则应创建行... 使用make(示例(一切正常,但这不是动态的。

package main
import (
"fmt"
"strings"
)
func main() {
//lines := make([]string, 10, 10)
var lines []string
addToLine(lines, 0)
addToLine(lines, 1)
addToLine(lines, 2)
fmt.Println(strings.Join(lines, "n"))
}
func addToLine(lines []string, lNum int) {
lNum++
for len(lines) <= lNum {
lines = append(lines, "")
}
lines[lNum] += "test line"
}

https://play.golang.org/p/K23e_suK6n_2

您可以在函数内覆盖lines内部变量addToLine()但不返回突变的切片。

如果将其退回,则按预期工作:

package main
import (
"fmt"
"strings"
)
func main() {
//lines := make([]string, 10, 10)
var lines []string
lines = addToLine(lines, 0)
lines = addToLine(lines, 1)
lines = addToLine(lines, 2)
fmt.Println(strings.Join(lines, "n"))
}
func addToLine(lines []string, lNum int) []string {
lNum++
for len(lines) <= lNum {
lines = append(lines, "")
}
lines[lNum] += "test line"
return lines
}

相关内容

最新更新