*string和sql.NullString之间的区别

8 go

我最近在Golang中一直在努力研究SQL NULL值.尝试不成功解组JSON对象使用后Decode()sql.NullString,我来到这个答案在计算器上:

在Golang中为JSON字段而不是空字符串分配null

使用字符串指针的解决方案似乎与Decode()和nil值完美配合.那么sql.NullString和之间的区别是什么*string?这只是零检查吗?

T. *_*rie 10

SQL具有与Golang不同的空值.

如果你看一下那个定义sql.NullString那就是你得到的:

type NullString struct {
    String string
    Valid  bool // Valid is true if String is not NULL
}
Run Code Online (Sandbox Code Playgroud)

如您所见,sql.NullString是一种表示来自SQL的空字符串(对应于"NULL")的方法.另一方面,nil *string是指向nil 的字符串的指针,因此两者是不同的.

  • [来自 Russ Cox](https://groups.google.com/g/golang-nuts/c/vOTFu2SMNeA/m/GB5v3JPSsicJ):“没有任何有效的区别。我们认为人们可能想要使用 NullString,因为它很常见,并且可能比 *string 更清楚地表达意图。但两者都可以。 (7认同)