參考 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