源码安装 NSQ

因为业务需要,要用到 NSQ。所以学习了下 NSQ。首先是安装,我在自己电脑上,倾向于源码安装。一是源码安装可以安装最新的代码,二是整个安装过程可以自己掌控。 但是,安装过程中遇到了一些坑。主要还是我对 Go 以及一些衍生工具用的不是特别熟悉,并且在网上搜索到的文章,都是抄来抄去的很多并不能解决我的问题。所以我把整个安装过程记录下来,给自己一个备忘,给别人一个方便。 安装 Go NSQ 是用 Go 写的,所以安装 NSQ 之前,要先安装 Go。 我这里给出安装具体过程的命令。具体可以参考我写的另外一篇文章 从零开始学习 Go ——安装。 echo "export GOROOT=$HOME/.golang/go" >> ~/.bash_profile echo "export GOPATH=$HOME/.golang/path" >> ~/.bash_profile echo "export PATH=$PATH:$HOME/.golang/go/bin" >> ~/.bash_profile echo "export GOROOT_BOOTSTRAP=$HOME/.golang/go1.4" >> ~/.bash_profile source ~/.bash_profile cd ~ mkdir .golang git clone https://github.com/golang/go.git go cp -r go go1.4 cd go1.4 git checkout -b release-branch.go1.4 origin/release-branch.go1.4 cd src ./make.bash cd ../../go git checkout -b release-branch.go1.8 origin/release-branch.
Read more →

理解 Go 语言中的方法和接收者

0x01 前言 Go 语言的语法实在有些不一样,与其它面向对象语言相比,Go 的方法似乎有些晦涩。 0x02 方法的定义 在 Go 语言里,方法和函数只差了一个,那就是方法在 func 和标识符之间多了一个参数。 type user struct { name string, email string, } //这是函数的定义 func notify(email string) { fmt.Println("Email is %s", email) } //这是方法的定义 func (u user) notify(email string) { fmt.Println("Email is %d", email) } 我们可以看到,方法是在 func 和 notify 之间多了一个 user 类型的参数 u,这个 u 就称作接收者。 0x03 接收者 接收者有两种,一种是值接收者,一种是指针接收者。顾名思义,值接收者,是接收者的类型是一个值,是一个副本,方法内部无法对其真正的接收者做更改;指针接收者,接收者的类型是一个指针,是接收者的引用,对这个引用的修改之间影响真正的接收者。像上面一样定义方法,将 user 改成 *user 就是指针接收者。 接收者与对象 相信有很多人看到这个接收者之后都很苦恼,到底这个接收者是什么,是干什么用的。我们在学习一门新的语言的时候,都讲究触类旁通,和我们已经了解的语言作对比。那么我们就通过拿 Go 和其它带有类的面向对象的语言做对比来搞清楚接收者是什么。这里我们用 php 来举例子。 在 php 中,我们要定义一个方法,首先是要定义一个类。
Read more →

从零开始学习 Go —— 安装

0x01 设置 Go 环境 要安装并顺利使用 Go,第一步就是要设置 Go 的环境。 需要设置的 Go 的环境变量,一共有三个。 GOROOT Go 语言的源码以及安装目录。 GOPATH Go 语言的开发目录,目录可以有多个,但是,当我们执行 go get 命令的时候,如未指定目录,会默认保存在第一个目录下。 GOROOT_BOOTSTRAP 这个目录在安装 Go 1.5 版本及之后的版本时需要设置。由于在 1.4 版本后,Go 编译器实现了自举,即通过 1.4 版本来编译安装之后版本的编译器。如果不设置该环境变量的话,会产生这样一个错误 Set $GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4.。 除此之外,还需要配置 PATH 环境变量到 Go 的二进制程序目录。 我们需要在 ~/.bash_profile 中添加下面的代码(我把所有的 Go 语言相关的东西都放在了 ~/.golang 下面了): export GOROOT=$HOME/.golang/go export GOPATH=$HOME/.golang/path export PATH=$PATH:$HOME/.golang/go/bin export GOROOT_BOOTSTRAP=$HOME/.golang/go1.4 0x02 安装 Go 我们有两种方式下载 Go,一个是直接下载源码,另一个是通过 GitHub 克隆项目,个人推荐选择第二种,地址:GayHub。
Read more →