Go 1.5 Release Notes 研读

1 Go 1.5简介 Go 1.5是一个重要的版本,包括主要实现结构调整。尽管这样,我们期待绝大多数程序可以像之前一样编译、运行(因该版本仍遵守Go 1兼容性承诺)。

阅读更多

Golang 内存模型

1 指令顺序调整 对于单goroutine程序代码,编译器和处理器有时会调整源码中的指令顺序来做一些优化。当然,此类调整在当前gorouine程序来看并不会改变其源码指令所指定的行为。但在多个线程共享内存的情形下,某个goroutine内部的指令顺序调整可能会影响到依赖其指令顺序的其他goroutine的行为。 看一段代码: package main import "fmt" var s string var done bool func setup() { s = "hello world" done = true if done { fmt.

阅读更多

Golang vendor文件夹使用

1 提出问题 我们知道,一个工程稍大一点,通常会依赖各种各样的包。而Go使用统一的GOPATH管理依赖包,且每个包仅保留一个版本。而不同的依赖包由各自的版本工具独立管理,所以当所依赖的包在新版本发生接口变更或删除时,会面临很多问题。 为避免此类问题,我们可能会为不同的工程设置不同的GOPATH,或者更改依赖包路径名称。这样手动维护起来也很头疼。 2 解决问题

阅读更多