我有一个结构如下:
type MyStruct struct {
Part1 string
Part2 string
Part3 string
}
我有一个用斜杠分隔的字符串,我想映射到这个:
part1/part2/part3
但是,该字符串可能只包含 1 个部分,例如 part1 或两个部分,例如 part1/part2
如果缺少任何部分,它会被映射为一个空字符串。
我很新,所以想知道实现此目标的最佳方法是什么。通常我会拆分字符串并检查长度以了解该怎么做。在 go 中有没有更优雅的方法来做到这一点?
最佳答案
这是 peterSO 解决方案的一个版本,它使用包装器来帮助简化逻辑。
package main
import (
"fmt"
"strings"
)
type Wrap []string
func (w Wrap) Get(i int) string {
if 0 <= i && i < len(w) {
return w[i]
}
return ""
}
type MyStruct struct {
Part1 string
Part2 string
Part3 string
}
func main() {
str := "part1/part2/part3"
split := Wrap(strings.Split(str, "/"))
var parts MyStruct
parts.Part1 = split.Get(0)
parts.Part2 = split.Get(1)
parts.Part3 = split.Get(2)
fmt.Println(parts)
str = "part1/part2"
split = Wrap(strings.Split(str, "/"))
parts = MyStruct{}
parts.Part1 = split.Get(0)
parts.Part2 = split.Get(1)
parts.Part3 = split.Get(2)
fmt.Println(parts)
}
关于Golang - 将可变长度数组映射到结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17936456/