индекс доступа к полю структуры элемента в Golang - PullRequest
0 голосов
/ 05 апреля 2020

Есть ли возможность изменить символ с некоторым индексом в поле структуры, если это строка?

Я имею в виду, что я могу делать такие манипуляции с типом строки:

func main() {
    v := "Helv"
    v[3] = "p"
}

Как я могу сделать то же самое с полями структуры? Ниже назначение не работает.

type ik struct {
    a int
    b string
}

func main() {
    f := ik{1, "Pasis"}
    fmt.Println(f.b)
    f.b[2] = "r"
}

1 Ответ

0 голосов
/ 05 апреля 2020

Поскольку строки неизменны в Go, вам необходимо переназначить другую строку для переменной. Вы можете добиться этого с помощью следующей уловки срезов,

chars := "Helv"
// To replace the character in i'th index,
chars = chars[:i] + "p" + chars[i+1:]

Итак, ваша программа становится

type ik struct {
    a int
    b string
}

func main() {
    chars := "Helv"
    chars = chars[:3] + "p" + chars[4:]
    fmt.Println(chars)

    f := ik{1, "Pasis"}
    fmt.Println(f.b)
    f.b = f.b[:2] + "r" + f.b[3:]
    fmt.Println(f.b)
}

Go детская площадка: https://play.golang.org/p/flERg0MVXLE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...