- 1、本文档共72页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)