如何使用Golang String pointers

谢权 · · 2738 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

string在Go语言中是一个值,从而string不能为nil

然而一个string类型的指针(*string)是可以为nil值的

根据经验来看还是使用普通的string除非你需要nil值,常规的string在Go语言中使用简单且安全,

使用指针就需要你写更多的代码去检查*string在引用前是否有值。

string的空值””和nil是不一样的。当你在写代码的时候不思考下你需要nil的原因,你可能得不到你想要的结果。

当我使用一个指向字符串的指针时?

当你需要使用*string时,比如你需要使用*string解析json或者yaml之类的东西给structure。

你会发现Version 和 HostName2个字段的保存值是空的。这对Version字段来说可能是正常的行为,但是对于HostName就不一定了。

这个问题的答案取决于你的程序,是否能够接受丢失属性unmarshall为空字符串,如果能够接受那没问题,换句话说,如果你解析的丢失的json和空json的性能一样的话,你就可以使用正常的string。

如果””可以为Hostname的值,但是不能接受属性的丢失!

那么解决这个问题只能使用*string

原文链接:https://dhdersch.github.io/golang/2016/01/23/golang-when-to-use-string-pointers.html

 

如何使用Golang String pointers

有疑问加站长微信联系(非本文作者)

本文来自:谢权SELF

感谢作者:谢权

查看原文:如何使用Golang String pointers

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

2738 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传