Go 12 月 8 日 笔记:参加 sunfmin 同学的 go 科普

vkill · 2012年12月09日 · 最后由 golanger 回复于 2013年09月27日 · 3803 次阅读

活动帖子在这里 http://ruby-china.org/topics/7274

再次感谢 @sunfmin 做的科普,@yedingding 和 对面那位同学的讨论


笔记:

Arch 下安装

#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/ 在线运行代码

安装 pkg

#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

写 hello

#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 的,太晚了,明天了贴

哈,做笔记很好,赞一个

go 会不会在 ruby 社区流行啊

这个必须顶顶!

支持下!

需要 登录 后方可回复, 如果你还没有账号请 注册新账号