50个Go开发者常犯的错误介绍.doc

  1. 1、本文档共72页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
阅读目录 ?? Go是一门简单有趣的语言,但与其他语言类似,它会有一些技巧。。。这些技巧的绝大部分并不是Go的缺陷造成的。如果你以前使用的是其他语言,那么这其中的有些错误就是很自然的陷阱。其它的是由错误的假设和缺少细节造成的。? 如果你花时间学习这门语言,阅读官方说明、wiki、邮件列表讨论、大量的优秀博文和Rob Pike的展示,以及源代码,这些技巧中的绝大多数都是显而易见的。尽管不是每个人都是以这种方式开始学习的,但也没关系。如果你是Go语言新人,那么这里的信息将会节约你大量的调试代码的时间。? 初学者? 开大括号不能放在单独的一行? 在大多数其他使用大括号的语言中,你需要选择放置它们的位置。Go的方式不同。你可以为此感谢下自动分号的注入(没有预读)。是的,Go中也是有分号的:-)失败的例子:? package?main? import?fmt func?main()? {?//error, cant have the opening brace on a separate line fmt.Println(?hello there!?)? }? 编译错误:? /tmp/sandbox826898458/main.go:6: syntax error: unexpected semicolon or newline before {? 有效的例子:? package?main? import?fmt func?main() {? fmt.Println(?works!?)? }? 未使用的变量? 如果你有未使用的变量,代码将编译失败。当然也有例外。在函数内一定要使用声明的变量,但未使用的全局变量是没问题的。? 如果你给未使用的变量分配了一个新的值,代码还是会编译失败。你需要在某个地方使用这个变量,才能让编译器愉快的编译。? Fails:? package?main? var?gvar?int?//not an error func?main() {? var?one?int?//error, unused variable two :=?2?//error, unused variable var?three?int?//error, even though its assigned 3 on the next line three =?3 }? Compile Errors:? /tmp/sandbox473116179/main.go:6: one declared and not used? /tmp/sandbox473116179/main.go:7: two declared and not used? /tmp/sandbox473116179/main.go:8: three declared and not used? Works:? package?main? import?fmt func?main() {? var?one?int _ = one? two :=?2 fmt.Println(two)? var?three?int three =?3 one = three? var?four?int four = four? }? 另一个选择是注释掉或者移除未使用的变量 :-)? 未使用的Imports? 如果你引入一个包,而没有使用其中的任何函数、接口、结构体或者变量的话,代码将会编译失败。如果你真的需要引入的包,你可以添加一个下划线标记符,_,来作为这个包的名字,从而避免编译失败。下滑线标记符用于引入,但不使用。? Fails:? package?main? import?(? fmt log time )? func?main() {? }? Compile Errors:? /tmp/sandbox627475386/main.go:4: imported and not used: fmt? /tmp/sandbox627475386/main.go:5: imported and not used: log? /tmp/sandbox627475386/main.go:6: imported and not used: time? Works:? package?main? import?(? _?fmt log time )? var?_ = log.Println? func?main() {? _ = time.Now? }? 另一个选择是移除或者注释掉未使用的imports :-)? 简式的变量声明仅可以在函数内部使用? Fails:? package?main? myvar :=?1?//error func?main() {? }? Compile Error:? /

文档评论(0)

***** + 关注
实名认证
内容提供者

我是自由职业者,从事文档的创作工作。

1亿VIP精品文档

相关文档