go - 正确区分未设置(零)和空白/空值

标签 go

区分以下情况的正确方法是什么:例如,给定以下条件,一个结构中的值何时从未设置或为空?

type Organisation struct {
    Category string
    Code     string
    Name     string
}

我需要知道(例如)是否从未设置过类别,或者用户是否将其保存为空白,我应该这样做:
type Organisation struct {
    Category *string
    Code     *string
    Name     *string
}

我还需要确保我正确地将null或空字符串保存到数据库中

我仍在学习GO,因此完全有可能我的问题需要更多信息。

最佳答案

string的零值是一个空字符串,您无法区分两者。

如果使用的是database/sql包,并且需要区分NULL和空字符串,请考虑使用sql.NullString类型。这是一个跟踪NULL状态的简单结构:

type NullString struct {
        String string
        Valid  bool // Valid is true if String is not NULL
}

您可以扫描到该类型并将其用作查询参数,程序包将为您处理NULL状态。

关于go - 正确区分未设置(零)和空白/空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61521983/

相关文章:

postgresql - Golang SQL 封装 jsonb 运算符

go - 在golang net/http/server.go中声明之前进行分配

docker - GCP 负载平衡器 : 502 Server Error, "failed_to_connect_to_backend"

go - 不同类型集的集合操作的实现策略

docker - Webserver 无法通过 docker-compose 连接到 Redis

go - 如何从 PUT、DELETE 方法 golang (gin gonic) 中检索数据

go - 将不同类型重新分配给 Go 中的变量

go - 如何获得函数的返回类型

select - Go 中 select 语句的正确用法是什么?

logging - 使用多个后端进行日志记录