参考 https://golang.org/doc/install
css
自ECUG2013洗脑回来,就渴望早点接触Gohtml
听着许式伟和谢孟军的演讲linux
发现go的网络库的确很强大,高负载利器,语言的一些精简致使很容易写出高效代码,并且开发效率 很高 不,应该是很是高 。(rpcjson,xml,.....其余一些自带的库也都很成熟)git
是否是传说中的好东东,必须本身用了才能知道 github
ECUG视频传送们golang
www.youtube.com/watch?v=af7qOeN9Mvkweb
推荐一些相关书籍shell
学写的话,固然 书籍更系统编程
推荐书籍:json
1.英文版《the way to go 》 中文版 《Go语言程序设计》 IVO BALBAERT
2.中文版 《学习Go语言》 www.mikespook.com/learning-go/
3. 雨痕的 Go 学习笔记 第四版.pdf https://github.com/qyuhen/book
4.英文版《Programming in Go 》 中文版《Go语言程序设计》 做者:Mark Summerfield http://item.jd.com/11281696.html
5.英文版《The Go Programming Language》 做者:David Chisnall
6. 《 Network programming with Go》
7. 《Mastering Concurrency in Go - Nathan Kozyra》
若是是过web 相关
谢孟军《Go Web编程》https://github.com/astaxie/build-web-application-with-golang/
查看本身的开发环境:
$lsb_release -a
Ubuntu 12.04.3 LTS
$uname -a (or $cat /proc/version)
Linux 3.8.0-33-generic gcc version 4.6.3
Operating system | Architectures | Notes |
---|---|---|
|
||
FreeBSD 8-STABLE or later | amd64 | Debian GNU/kFreeBSD not supported |
Linux 2.6.23 or later with glibc | amd64, 386, arm | CentOS/RHEL 5.x not supported; install from source for ARM |
Mac OS X 10.7 or later | amd64 | use the clang or gcc† that comes with Xcode‡ |
Windows XP or later | amd64, 386 | use MinGW gcc†. No need for cygwin or msys. |
golang支持交叉编译,也就是说你在32位平台的机器上开发,能够编译生成64位平台上的可执行程序。
环境变量说明:
$GOROOT 指向golang安装以后的根目录,windows平台下默认为c:\go,会在安装过程当中由安装程序自动写入系统环境变量。
$GOARCH 目标平台(编译后的目标平台)的处理器架构(38六、amd6四、arm)
$GOOS 目标平台(编译后的目标平台)的操做系统(darwin、freebsd、linux、windows)
$GOBIN 指向安装以后根目录下的bin目录,即$GOROOT/bin,windows平台下 MSI安装路径 默认为c:\go\bin,会在安装过程当中由安装程序自动添加到PATH变量中
以上 GOARCH , GOOS 均可以默认不设置
Go语言交叉编译,运行在不一样的操做系统
若用的Mac 64位,须要编译一个Windows 32位的可执行程序,一句搞定 “CGO_ENABLED=0 GOOS=windows GOARCH=386 go build”
CGO_ENABLED设置是否须要使用CGO,本例子不须要,设置为0,若是须要使用CGO编译,设置为1
linux 安装golang=================
2种安装方式
1. https://code.google.com/p/go/downloads/list
直接下载 go1.2.linux-amd64.tar.gz
解压命令 tar -zxvf go1.2.linux-amd64.tar.gz
PS.还有源码包 go1.2.src.tar.gz(做为码农,不看源码怎么行,关于语言有疑问的能够直接看代码 :D )
2.命令行下载
$hg clone -u release https://code.google.com/p/go
而后运行bash脚本安装
$cd go/src $./all.bash
运行all.bash后出现"ALL TESTS PASSED"字样时才算安装成功。
(固然apt-get install golang 最简单)
假设解压到了$HOME/go中
系统级别
$cd /etc
$cat /etc/.profile
$ll 看此文件的权限
$sudo /etc/.profile
用户级别
$cat $HOME/.profile 意思同样$cat ~/.profile ($HOME/.profile 或者 $HOME/.bashrc 均可以添加 一下环境变量)
参考:
https://en.wikipedia.org/wiki/Bash_%28Unix_shell%29
http://blog.csdn.net/chenchong08/article/details/7833242
http://bbs.chinaunix.net/thread-1924583-1-1.html
.bash_profile和.bashrc的什么区别及启动过程 .bash_profile和.bashrc的什么区别 bash_profile和.bashrc的什么区别 -------------------------------------------------------------------------------- /etc/profile:此文件为系统的每一个用户设置环境信息,当用户第一次登陆时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置. /etc/bashrc:为每个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取. ~/.bash_profile:每一个用户均可使用该文件输入专用于本身使用的shell信息,当用户登陆时,该 文件仅仅执行一次!默认状况下,他设置一些环境变量,执行用户的.bashrc文件. ~/.bashrc:该文件包含专用于你的bash shell的bash信息,当登陆时以及每次打开新的shell时,该 该文件被读取. ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的能够做用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是\"父子\"关系. ~/.bash_profile 是交互式、login 方式进入 bash 运行的 ~/.bashrc 是交互式 non-login 方式进入 bash 运行的 一般两者设置大体相同,因此一般前者会调用后者。 -------------------------------------------------------------------------------- 在登陆Linux时要执行文件的过程以下: 在刚登陆Linux时,首先启动 /etc/profile 文件,而后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/.profile文件中的其中一个(根据不一样的linux操做系统的不一样,命名不同), 执行的顺序为:~/.bash_profile、 ~/.bash_login、 ~/.profile。 若是 ~/.bash_profile文件存在的话,通常还会执行 ~/.bashrc文件。 由于在 ~/.bash_profile文件中通常会有下面的代码: if [ -f ~/.bashrc ] ; then . ./bashrc fi ~/.bashrc中,通常还会有如下代码: if [ -f /etc/bashrc ] ; then . /bashrc fi 因此,~/.bashrc会调用 /etc/bashrc文件。最后,在退出shell时,还会执行 ~/.bash_logout文件。 执行顺序为:/etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout 关于各个文件的做用域,在网上找到了如下说明: (1)/etc/profile: 此文件为系统的每一个用户设置环境信息,当用户第一次登陆时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。 (2)/etc/bashrc: 为每个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。 (3)~/.bash_profile: 每一个用户均可使用该文件输入专用于本身使用的shell信息,当用户登陆时,该文件仅仅执行一次!默认状况下,他设置一些环境变量,执行用户的.bashrc文件。 (4)~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登陆时以及每次打开新的shell时,该该文件被读取。 (5) ~/.bash_logout:当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的能够做用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是"父子"关系。 (6)~/.bash_profile 是交互式、login 方式进入 bash 运行的~/.bashrc 是交互式 non-login 方式进入 bash 运行的一般两者设置大体相同,因此一般前者会调用后者。 /etc/profile和/etc/environment等各类环境变量设置文件的用处 先将export LANG=zh_CN加入/etc/profile ,退出系统从新登陆,登陆提示显示英文。 将/etc/profile 中的export LANG=zh_CN删除,将LNAG=zh_CN加入/etc/environment,退出系统从新登陆,登陆提示显示中文。 用户环境创建的过程当中老是先执行/etc/profile而后在读取/etc/environment。为何会有如上所叙的不一样呢? 应该是先执行/etc/environment,后执行/etc/profile。 /etc/environment是设置整个系统的环境,而/etc/profile是设置全部用户的环境,前者与登陆用户无关,后者与登陆用户有关。 系统应用程序的执行与用户环境能够是无关的,但与系统环境是相关的,因此当你登陆时,你看到的提示信息,象日期、时间信息的显示格式与系统环境的LANG是相关的,缺省LANG=en_US,若是系统环境LANG=zh_CN,则提示信息是中文的,不然是英文的。 对于用户的SHELL初始化而言是先执行/etc/profile,再读取文件/etc/environment.对整个系统而言是先执行/etc/environment。这样理解正确吗? /etc/enviroment --> /etc/profile --> $HOME/.profile -->$HOME/.env (若是存在) /etc/profile 是全部用户的环境变量 /etc/enviroment是系统的环境变量 登录系统时shell读取的顺序应该是 /etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env 缘由应该是jtw所说的用户环境和系统环境的区别了 若是同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不一样的值那应该是以用户环境为准了。
export GOROOT=$HOME/go
export GOBIN=$HOME/go/bin
export PATH=$PATH:$GOROOT/bin
source $HOME/.profile或者$HOME/.bashrc 更新配置
具体参考http://godoc.golangtc.com/doc/install/source
而后是工做目录,代码放在这个目录中
$ export GOPATH=$HOME/workproject
PS. arm树莓派的话,也是能够编译执行的(内置gcc交叉编译工具) 和linux 同样设置,只不过,须要设置$GOARCH 为arm,$GOOS
若是万一你配置文件修改错误,致使ls, vim 等bash命令无效。直接用export能够临时恢复。
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin 执行完以上的命令后,
你能够从新执行 source /etc/profile 或者 source ~/.bashrc 命令来让你的配置文件永久恢复生效
===============================================
windows 安装go, 若是要用CGO,须要安装MINGW ( 由于须要gcc)========
默认路径是c:\go
1>.环境变量
1.1>MSI环境变量已经设置OK,
1.2>zip 须要本身设置环境变量
全局变量
添加
GOROOT c:\go
GOBIN c:\go\bin
GOPATH d:\workproject
而后在path 在后面添加 xxxxxx;%GOROOT%;%GOBIN%;%GOPATH%;
【若成功,能够看到如下version信息】
C:\go\>go version
go version go1.5.1 windows/amd64
2>.编译
而后管理员权限启动cmd,
进入【GOROOT 目录】 编译/test/helloworld.go
而后试下编译 go build helloworld.go
【若成功,能够看到如下信息】
hello world
关于IDE
推荐下 国人开发的 liteide
配合IDE的话,载入*.go文件后, 点击【编辑当前环境】
# native compiler windows
GOROOT=c:\go\
GOBIN= c:\go\bin\
GOARCH=amd64
GOOS=windows
#CGO_ENABLED=1
PATH=c:\mingw32\bin;%GOROOT%\bin;%PATH%
#LITEIDE_GDB=gdb
LITEIDE_MAKE=mingw32-make
LITEIDE_TERM=%COMSPEC%
LITEIDE_TERMARGS=
LITEIDE_EXEC=%COMSPEC%
LITEIDE_EXECOPT=/C
==============
点击编译,运行 就能够看到结果了。
1.5以上版本觉得 使用了自举,因此须要用老版本的go 来编译新版本,因此出现以下错误
=================
C:\go\src>all.bat
##### Building Go bootstrap tool.
cmd/dist
ERROR: Cannot find C:\Users\scott\Go1.4\bin\go.exe
"Set GOROOT_BOOTSTRAP to a working Go tree >= Go 1.4."
==================
解决办法: 下载1.4.x 版本的go 后(是须要MINGW gcc 编译1.5的代码), 设置GOROOT_BOOTSTRAP,GOROOT_BOOTSTRAP\bin,
GOROOT_BOOTSTRAP c:\go
而后运行all.bat,就能够获得新版本, 再把go目录名字改下go1.4, go1.6改为go
自举
C:\go\src>make.bat
===========================
linux 能够参考如下网页
http://mikespook.com/2015/06/如何从源代码构建-go-1-5-开发环境/
卸载也是很重要的,(能够经过go env 来了解GOROOT...信息 , 卸载也就知道在哪了)
To remove an existing Go installation from your system delete the go
directory. This is usually /usr/local/go
under Linux, Mac OS X, and FreeBSD or c:\Go
under Windows.
You should also remove the Go bin
directory from your PATH
environment variable. Under Linux and FreeBSD you should edit /etc/profile
or $HOME/.profile
. If you installed Go with the Mac OS X package then you should remove the /etc/paths.d/go
file. Windows users should read the section about setting environment variables under Windows.
$go version 我是ubuntu14.04 默认安装的go1.2.1版本
$go env 查看以前版本的go 的GOROOT、GOTOOLDIR、GOPATH等信息
默认安装版本 须要删除
1. /usr/lib/go
2. /usr/share/go
3. /usr/bin/go
而后更新本身的新版本的go环境变量 就能够了
go version
go env
都正常了
=================
linux 用go1.4自举编译go1.7
1.添加环境变量
vim ~/.bashrc
export GOROOT=/usr/local/go
export GOBIN=$GOROOT/bin
export PATH=$PATH:$GOROOT/bin
export GOPATH=$HOME/goWorkproject
export GOROOT_BOOTSTRAP=/usr/local/go1.4
更新环境变量 source ~/.bashrc
2.进入go1.7的目录 /usr/local/go
cd go/src/
运行 ./make.bash
.......
Installed Go for linux/amd64 in /usr/local/go
Installed commands in /usr/local/go/bin
查询版本
root@iZ25290crlqZ:/usr/local/go/src# go version
go version go1.7 linux/amd64
OK就算完成了。
http://studygolang.com/topics/1852