点击这里,查看剩余7项实用技巧等更多重要内容
简介: Go语言实战学习小技巧
使用单一的 GOPATH 多个 GOPATH 的情况并不具有弹性。GOPATH 本身就是高度自我完备的(通过导入路径)。有多个 GOPATH 会导致某些副作用,例如可能使用了给定的库的不同的版本。你可能在某个地方升级了它,但是其他地方却没有升级。而且,我还没遇到过任何一个需要使用多个 GOPATH 的情况。所以只使用单一的 GOPATH,这会提升你 Go 的开发进度。
许多人不同意这一观点,接下来我会做一些澄清。像 etcd 或camlistore 这样的大项目使用了像 godep 这样的工具,将所有依赖保存到某个目录中。也就是说,这些项目自身有一个单一的 GOPATH。它们只能在这个目录里找到对应的版本。除非你的项目很大并且极为重要,否则不要为每个项目使用不同的 GOPATH。如果你认为项目需要一个自己的 GOPATH 目录,那么就创建它,否则不要尝试使用多个 GOPATH。它只会拖慢你的进度。
将 for-select 封装到函数中 如果在某个条件下,你需要从 for-select 中退出,就需要使用标签。例如:
func main() {
L:
for {
select {
case <-time.After(time.Second):
fmt.Println(“hello”)
default:
break L
}
}
fmt.Println(“ending”)
}
如你所见,需要联合break使用标签。这有其用途,不过我不喜欢。这个例子中的 for 循环看起来很小,但是通常它们会更大,而判断break的条件也更为冗长。
如果需要退出循环,我会将 for-select 封装到函数中:
func main() {
foo()
fmt.Println(“ending”)
}
func foo() {
for {
select {
case <-time.After(time.Second):
fmt.Println(“hello”)
default:
return
}
}
}
你还可以返回一个错误(或任何其他值),也是同样漂亮的,只需要:
// 阻塞
if err := foo(); err != nil {
// 处理 err
}
在初始化结构体时使用带有标签的语法
关键字:JavaScript 安全 数据库连接 测试技术 Go 数据库 Windows
关键字: 钉钉扫码进群,阿里云等各界大佬等着你哦~
