活动帖子在这里 http://ruby-china.org/topics/7274
再次感谢 @sunfmin 做的科普,@yedingding 和 对面那位同学的讨论
笔记:
#yaourt -S go
#yaourt -S mercurial (安装 hg)
#vi ~/.bashrc 添加
export GOPATH=/usr/lib/go/site
export GOROOT=/usr/lib/go
export PATH=$PATH:/usr/lib/go/site/bin
默认已经被设置了 $GOPATH,可以自己修改
$GOROOT 需要设置到 go 的安装目录下,Arch 默认是 /usr/lib/go,这样设置后在 go 项目中 go install .
的时候,才会编译 bin 文件到 $GOPATH/bin,这样我们 which 才可以找到。如果 $GOROOT 为空的话, go install .
会在当前项目里生成一个 bin 文件。
http://go.pkgdoc.org/ 查找 go pkg 的网站,类似于 rubygems.org http://tour.golang.org/ 就是用这个来科普的,中文版 http://go-tour-zh.appsp0t.com/ http://play.golang.org/ 在线运行代码
#go get code.google.com/p/go.net/websocket 安装完成后看看 $GOPATH 目录
#go get github.com/garyburd/redigo/redis
如果我们需要把项目放到 github 上,那么就像 redis 一样,创建好的目录如下
#mkdir -p $GOPATH/src/github.com/your_name/repo_name
#touch $GOPATH/src/github.com/your_name/repo_name/main.go
#vi $GOPATH/src/github.com/your_name/repo_name/main.go
package main
import "fmt"
func main() {
fmt.Println("Hello, go")
}
直接运行,在项目根目录下执行 #go run main.go
编译,在项目根目录下执行 #go install .
,这样就会在 $GOPATH/bin 下生成 repo_name 了,可以直接 repo_name
来运行,因为我们已经把 $GOPATH/bin 加入到 PATH 里咯
简单的 int to string,专业的有 strconv 这个 pkg
fmt.Sprint(10)
返回多个值也可以这样,有多个 if 的时候这个就方便多了
func add(x int, y int) (r1 int, r2 int) {
r1 = 1
r2 = 2
return
}
给 int 个别名,go 不支持直接在 int 上添加一个方法,所以只有这样,这个在科普的时候我们都有点不理解
type MyInt int
func (mi MyInt) MyMethod() int {
return int(mi) * 2
}
Myint(100).MyMethod()
这样 v 只在 if 的这个作用域中生效
if v := math.Pow(x, n); v < lim {
return v
}
比较下这两个
[]rune("我的hello")
[]byte("我的hello")
生成 100 长度的 map
x = make(map[String]string, 100)
判断类型
reflect.TypeOf(er)
准备今天再练习下 go 的 websocket server 的,太晚了,明天了贴