pointers - 在结构中使用指针有缺点吗?
问题描述
我正在玩mysql并将结果返回到一个结构数组中。
type User struct {
FirstName string
LastName string
}
Go 不允许将 nil 值作为字符串,但如果我将字符串设为指针
type User struct {
FirstName *string
LastName *string
}
然后它是允许的,我可以将数据库中的 NULL 值解析为 nil 字符串。
使用指针允许 nil 是否有特定的缺点?为什么我应该使用更繁琐的 NullString 方法?
type NullString struct {
String string
Valid bool
}
解决方案
缺点很简单,但它们主要也是优点:
现在有一个可以为 nil 的指针。您可能需要以不同的方式处理这种情况(因为指针可能为零),这意味着您必须编写更多代码。这也是它的优点:您可能需要以不同的方式处理这种情况(即,对于您希望解决的问题),在这种情况下,您需要一种方法将“不存在”与“内容为 ___”分开标记。将指针设置为 nil 的能力为您提供了这种区别。
因为涉及到指针,所以可以共享底层数据。这也是它自身的优势。
实际上使用数据需要一个额外的间接级别。(这是纯粹的劣势——这里没有优势。)
推荐阅读
- python - “尝试在非包中进行相对导入” Ansible 模块
- bash - 将 UTF-8 字符转换为 NCR Iconv
- javascript - 除了双击可编辑数据网格中的编辑行为外,还为每一行添加保存
- azure-devops - 如何在 azur devops 管道的起始变量中创建 yaml 切换?
- git - 将特定文件推送到 GitHub
- css - ASP.NET MVC:使列表中的字体样式加粗
- vue.js - “Vue-router@next”- 发现“isAsyncWrapper”的问题
- blazor - 在 Blazor WASM 服务器启动项目中显示找不到页面错误
- javascript - 从脚本加载页面时如何使用WebClient获取页面源?
- flutter - 扑医生和破 %JAVA_OPTS% 句