区分 Go 结构中的 Nil 和空值
在 Go 中,区分 nil 值(即从不set)和一个空值或空白值(例如空字符串)。在处理来自数据库或用户输入的数据时,这种区别至关重要。
问题:
考虑以下 Go 结构:
type Organisation struct { Category string Code string Name string }
如果用户未设置类别字段或将其保存为空字符串,则必须确定该值是否代表缺失值或空用户选择。
解决方案:
一种方法是使用指针字段:
type Organisation struct { Category *string Code *string Name *string }
对于指针字段,nil 值表示未设置的字段,而带有空字符串的非 nil 值表示空选择。
数据库处理:
在 Go 中,字符串类型的零值是空字符串。因此,使用标准字符串类型无法区分未设置的字符串字段和空字符串字段。对于数据库集成:
示例:
这里是一个使用 sql.NullString:
<code class="go">type Organisation struct { Category sql.NullString Code string Name string } // Check if Category is set and not NULL if organisation.Category.Valid && organisation.Category.String != "" { // Category was set and has a value } else { // Category is either unset or NULL }</code>
以上是如何区分 Go 结构中的 Nil 值和空值?的详细内容。更多信息请关注PHP中文网其他相关文章!