Golang中的结构项字段的访问索引

问题描述 投票:-2回答:1

如果是字符串,是否有可能在结构字段中使用某些索引来更改字符?

我的意思是我可以使用字符串类型进行此类操作:

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"
}
go
1个回答
0
投票

由于字符串在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)
}

去游乐场:https://play.golang.org/p/flERg0MVXLE

© www.soinside.com 2019 - 2024. All rights reserved.