Переберите часть строки и добавьте 10 к каждой строке - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь перебрать фрагмент строки и добавить 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 не определено.

1 Ответ

0 голосов
/ 24 декабря 2018

Используйте этот код, чтобы добавить «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, которая отбрасывается.
  • Код в этом ответе передает значение среза вместо передачи указателя на срез.Нет необходимости передавать указатель в этой ситуации, и при этом нет никакой выгоды в производительности для передачи указателя.Проще просто передать значение.
...