在结构中,指针类型相对于对象类型的用法是什么



我正在运行一个rest服务。API调用将填充到用户使用REST调用传递的结构下面。

type struct Body{
param1 *string
param2 string
}

现在我可以在处理程序函数中处理这个请求了。作为处理程序函数中错误处理的一部分,我将执行以下操作,

对于param1(它是一个指针(,我需要检查指针是否不是nil,字符串的长度是否应该不为0。

对于param2,我只需要检查字符串的长度是否不应该是0

使用字符串对象将使我使用更少的检查并编写干净的代码。那么为什么大多数人在这种情况下使用指针呢。

在go语言中,没有初始值声明的变量被设置为零值,而不是null值。

  • 0适用于所有整数类型
  • "(空字符串(表示字符串
  • nil表示接口、切片、指针

因此,当您需要区分null值和零值时,您需要使用pointers,因为pointers零值就是nil。Golang不允许null,它的版本是nil,有些语言允许

示例案例:

在MySql"(空字符串(等数据库中,对于字符串和int类型,0不是null值。如果需要在数据库中以不同的方式保存"(空字符串(的字符串值和null值,则需要在请求体结构中使用字符串的指针。

最新更新