go - 在 go 中初始化结构时如何处理空值?
问题描述
我正在尝试拆分逗号分隔的字符串并使用这些值来初始化结构。这就是我现在的做法:
type Address struct {
Street string
City string
ZipCode string
}
s := strings.Split("street,city,zip", ",")
data := Address{Street: s[0], City: s[1], ZipCode: s[2]}
我遇到的问题是我也必须处理这个输入:
"street,"
"street,city"
知道如何在不超出范围的情况下做到这一点吗?我已经研究过用三点语法解包......但结构似乎不支持它。
解决方案
在访问元素之前检查切片的长度:
data := Address{}
s := strings.Split("street,city,zip", ",")
data.Street = s[0]
if len(s) > 1 {
data.City = s[1]
}
if len(s) > 2 {
data.ZipCode = s[2]
}
如果这种情况很多,那么编写一个简单的辅助函数:
func get(s []string, i int) string {
if i >= len(s) {
return ""
}
return s[i]
}
像这样使用它:
data := Address{Street: get(s, 0), City: get(s, 1), ZipCode: get(s, 2)}
推荐阅读
- jsp - 如何使用jsp页面隐藏url中的传递参数
- java - SpringBoot - 使用 fly-saucer-pdf 结果生成 pdf 到空文件中
- django - 如何针对具有 id 的对象创建对象
- java - 引起:java.lang.RuntimeException: Parcelable 遇到 IOException 读取 Serializable 对象
- ios - 是否有一个 swift 库可以让您自定义 JSON 中键的顺序?
- javascript - 如何从 curl -T --upload-data 选项中获取等效的数据格式在浏览器中使用 JavaScript?
- .net - OSX 上的 Cake 因“错误:程序集名称无效”而失败
- protractor - 量角器:元素不可交互
- python - 无法旋转 seaborn 图形下所有子图的 xticklabels
- javascript - Javascript binary animation infinite loop