Golang - 将可变长度数组映射到结构

我有一个结构如下:


type MyStruct struct {

   Part1 string

   Part2 string

   Part3 string

}

我有一个由斜杠分隔的字符串,我想映射到这个:


part1/part2/part3

但是,字符串可能只包含 1 个部分(例如 part1)或两个部分(例如 part1/part2)


如果缺少任何部分,则将其映射为空字符串。


我很陌生,所以想知道实现这一目标的最佳方法是什么。通常我会拆分字符串并检查长度以知道该怎么做。在 go 中有更优雅的方法来做到这一点吗?


慕桂英4014372
浏览 284回答 2
2回答

芜湖不芜

这是 peterSO 解决方案的一个版本,它使用包装器来帮助简化逻辑。package mainimport (&nbsp; &nbsp; "fmt"&nbsp; &nbsp; "strings")type Wrap []stringfunc (w Wrap) Get(i int) string {&nbsp; &nbsp; if 0 <= i && i < len(w) {&nbsp; &nbsp; &nbsp; &nbsp; return w[i]&nbsp; &nbsp; }&nbsp; &nbsp; return ""}type MyStruct struct {&nbsp; &nbsp; Part1 string&nbsp; &nbsp; Part2 string&nbsp; &nbsp; Part3 string}func main() {&nbsp; &nbsp; str := "part1/part2/part3"&nbsp; &nbsp; split := Wrap(strings.Split(str, "/"))&nbsp; &nbsp; var parts MyStruct&nbsp; &nbsp; parts.Part1 = split.Get(0)&nbsp; &nbsp; parts.Part2 = split.Get(1)&nbsp; &nbsp; parts.Part3 = split.Get(2)&nbsp; &nbsp; fmt.Println(parts)&nbsp; &nbsp; str = "part1/part2"&nbsp; &nbsp; split = Wrap(strings.Split(str, "/"))&nbsp; &nbsp; parts = MyStruct{}&nbsp; &nbsp; parts.Part1 = split.Get(0)&nbsp; &nbsp; parts.Part2 = split.Get(1)&nbsp; &nbsp; parts.Part3 = split.Get(2)&nbsp; &nbsp; fmt.Println(parts)}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go