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

问题描述 投票:0回答:1

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

go append slice
1个回答
0
投票

您覆盖了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
}
© www.soinside.com 2019 - 2024. All rights reserved.