0

我正在尝试遍历一段字符串并为每个字符串添加 10,例如:

package main

import "fmt"

func addTen(ss *[]string) {
    for _, s := range *ss {
        s = fmt.Sprintf("%s10", s)
    }
}

func main() {
    ss := []string{"a", "b", "c"}
    addTen(&ss)
    fmt.Println(ss)
}

编译器抱怨s未定义。

4

1 回答 1

2

使用此代码将“10”附加到每个切片元素:

package main

import "fmt"

func addTen(ss []string) {
    for i, s := range ss {
        ss[i] = fmt.Sprintf("%s10", s)
    }
}

func main() {
    ss := []string{"a", "b", "c"}
    addTen(ss)
    fmt.Println(ss)
}

关键点:

  • 将字符串分配给切片元素。代码s = fmt.Sprintf("%s10", s)分配给局部变量s,该变量被丢弃。
  • 此答案中的代码传递切片值而不是传递指向切片的指针。在这种情况下没有必要传递指针,传递指针也没有性能优势。只传递值更简单。
于 2018-12-24T20:06:27.970 回答