我不明白为什么追加不能按预期工作。 如果键大于长度,则应创建行... 使用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
}