首先從網(wǎng)上下載go語言的編譯器,我在發(fā)布這篇經(jīng)驗(yàn)的時(shí)候go語言編譯器的版本已經(jīng)更新到了1.4版。根據(jù)你的系統(tǒng)平臺(tái)下載相應(yīng)的版本后,如果是壓縮文件,先解壓后雙擊運(yùn)行,不是壓縮文件,直接雙擊運(yùn)行就可以了,運(yùn)行后出現(xiàn)下面的界面,在下面界面上單擊“Next”。
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站制作、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、巴馬ssl等。為上1000家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的巴馬網(wǎng)站制作公司
跟所有的軟件安裝包一樣,go語言編譯安裝是也需要接受許可協(xié)議,在圖中紅圈的位置單擊選擇框,同意許可協(xié)議,單擊“Next”。
在這一步你要改變go的安裝目錄,默認(rèn)是安裝在C盤下,C盤下文件文件太多會(huì)影響系統(tǒng)性能,單擊紅圈所示的“change”按鈕會(huì)彈出安裝目錄選擇對(duì)話框。
在這個(gè)對(duì)話框中你選擇你要安裝go編譯器的目錄,選擇后會(huì)在紅圈所示的位置會(huì)顯示你所選擇的目錄,如果不是你預(yù)期的目錄,青重新選擇,然后單擊“OK”按鈕,對(duì)話框會(huì)回到第三步的對(duì)話框,但是目錄以及變成了你剛才選擇的目錄,這個(gè)對(duì)話框中單擊“Next”按鈕。
這一步開始安裝go編譯器了,單擊“Install”按鈕,系統(tǒng)會(huì)自動(dòng)安裝go編譯器到你剛才選擇的目錄中。
如果不出意外,安裝程序開始copy文件,并以進(jìn)度條的方式顯示當(dāng)前的角度,一般5分鐘左右就安裝完了。
黨出現(xiàn)下面的界面的時(shí)候,表明go編譯器已經(jīng)安裝完成了。單擊“Finish”按鈕結(jié)束安裝。
安裝完后要配置一些環(huán)境變量,首先要把go安裝目錄下的bin目錄放到Path環(huán)境變量中。
接著創(chuàng)建一個(gè)GOPATH環(huán)境變量,這個(gè)變量很重要,我自己寫的代碼要放到這個(gè)變量中配置的目錄中,go編譯器才會(huì)找到并編譯
繼續(xù)在創(chuàng)建一個(gè)GOROOT變量,配合go編譯器安裝的目錄。
完成步驟后,打開命令行g(shù)o verison 回車,如果配置沒有錯(cuò)會(huì)出現(xiàn)go編譯器的版本信息,如下圖中紅圈所示。
首先需要下載下載go平臺(tái)安裝包
安裝程序 下載地址址h如果是您的系統(tǒng)是windows32 位系統(tǒng)請(qǐng)選擇go1.3.3.windows-386.msi即可,其他的,請(qǐng)按照自己所需版本來進(jìn)行下載,如下圖所示:
安裝以及配置環(huán)境變量
由于Windows下的的安裝包有兩種:msi和zip的;zip的是免安裝的,解壓在配置一些環(huán)境變量之后就可以使用,msi的則是安裝包版本的,安裝的時(shí)候會(huì)設(shè)置好對(duì)應(yīng)的環(huán)境變量。我的電腦是Win7 64位,因?yàn)榉奖悖拖螺d了下面的版本。下好安裝包后,安裝過程就很簡(jiǎn)單了,一路“Next”就好了。 雖然msi會(huì)自動(dòng)配置一些環(huán)境變量,但是本人在安裝完之后還是自己配置了環(huán)境變量,所以在安裝完Go之后,我們最好還是檢查一些所有的環(huán)境變量是否正常。主要的環(huán)境變量有以下幾個(gè):
GOROOT:Go的安裝目錄
GOPATH:用于存放Go語言Package的目錄,這個(gè)目錄不能在Go的安裝目錄中
GOBIN:Go二進(jìn)制文件存放目錄,寫成%GOROOT%\bin就好
GOOS:操作系統(tǒng)
GOARCH:指定系統(tǒng)環(huán)境,i386表示x86,amd64表示x64
PATH:需要將%GOBIN%加在PATH變量的最后,方便在命令行下運(yùn)行Go
如下圖所示:
像我自己安裝的,下載完成之后解壓到任意目錄(所有目錄均不能使用中文):D:\Go;
然后是go環(huán)境變量的配置:
GOARCH:386(go安裝版本)
GOBIN:D:\Go\bin(exe執(zhí)行文件路徑)
GOOS:windows(go運(yùn)行的系統(tǒng))
GOROOT:D:\Go(go的解壓路徑)
GOPATH:E:\go\data(go的工具包路徑,隨意指定,后面會(huì)用到)
然后在path環(huán)境變量中追加:;%GOBIN%
完成之后在cmd窗口輸入:go version,如下圖所示:
1、下載go的zip文件。并且一定要把文件解壓到c:\go目錄下。
2、配置windows的高級(jí)環(huán)境變量。包括:GOROOT、GOOS、GOBIN、GOARCH。并且在path變量里面把c:\go\bin加入。以便可以在命令行直接運(yùn)行g(shù)o命令。
舉例:我的機(jī)器:
GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;
GOBIN=c:\go\bin;F:\workspace\goSample01\bin;
其中,c:\go是go的安裝路徑;
F:\workspace\goSample01是我寫的go語言項(xiàng)目的工程目錄;
F:\workspace\goSample01\bin是go語言項(xiàng)目的工程目錄下的可執(zhí)行文件路徑;
3、在完成環(huán)境變量配置后,打開一個(gè)命令行窗口,直接輸入go,然后回車,看看是否出現(xiàn)go的幫助信息。如果出現(xiàn),那么go的基本環(huán)境就OK了。
注意:這個(gè)基本環(huán)境不包含開發(fā)工具,也不能直接編譯帶C代碼的go程序。
4、
(可選)為了支持Import遠(yuǎn)程包,最好裝個(gè)gomingw。下載地址:
/downloads/list。如果下的是壓縮包,請(qǐng)把它解壓到C盤。例如,C:\gowin-env。里面有個(gè)Console.bat是以后使用go
get的環(huán)境。舉例:有個(gè)文件a.go,里面import(
"fmt"
"github.com/astaxie/beedb"
_ "github.com/ziutek/mymysql/godrv"
為了編譯該a.go文件,需要啟動(dòng)Console.bat,然后在該命令行窗口,進(jìn)入c:\go\src目錄下,執(zhí)行g(shù)o getgithub.com/astaxie/beedb
Go get github.com/ziutek/mymysql/godrv .
Go會(huì)自動(dòng)下載該遠(yuǎn)程包并編譯和安裝這些包。
配置goclipse(可選)
(如果不喜歡eclipse開發(fā)工具,請(qǐng)?zhí)^這個(gè)配置。)
1、下載并安裝goclipse插件。Goclipse是go語言for eclipse的插件,下載地址:
2、啟動(dòng)eclipse并創(chuàng)建go項(xiàng)目。然后寫個(gè)最簡(jiǎn)單的helloworld.go文件,并運(yùn)行。代碼如下:
packagemainimport"fmt"func main(){ fmt.Printf("hello, world")}
配置gocode(可選)
如果不需要go語法輔助和eclipse里面的(按ALT+/)彈出go語言自動(dòng)輔助功能,請(qǐng)?zhí)^這個(gè)配置。
1、下載gocode的zip文件,解壓后放在go的bin目錄下。
2、下載并安裝Git軟件。并且在path里面配置git的執(zhí)行路徑。例如c:\git\bin
3、在命令行執(zhí)行:go build .\gocode。如果一切正常,那么將會(huì)編譯生成一個(gè)gocode.exe文件在go的bin目錄下。如果編譯失敗,那么就轉(zhuǎn)第4步。
4、如果第3步直接編譯gocode源文件成功,那就直接到第5步。否則,就需要通過git下載gocode源文件,然后再編譯。在命令行執(zhí)行:go get -u github.com/nsf/gocode 。就會(huì)生成gocode.exe文件。
5、在goclipse插件里面指定gocode的路徑。就可以在elcipse里面調(diào)用gocode來幫助寫編碼了。
從開發(fā)工具這塊看,go語言還不夠成熟,開發(fā)工具都還不完善,有待改進(jìn)。
下載go-tour教程源代碼(可選)
Google有個(gè)在線運(yùn)行g(shù)o語言的教程(),很不錯(cuò)。支持在web上直接運(yùn)行大部分的go程序,想了解這個(gè)教程的源代碼的朋友可以通過以下方式獲取。如果沒興趣,可以跳過這個(gè)步驟。
1、下載安裝Mercurial軟件。
2、在命令行下輸入:
hg clone
作為測(cè)試用的。如果把http改成https協(xié)議,下載就會(huì)失敗。搞不懂。
編譯帶調(diào)用C代碼的go文件(可選)
1、為了在windows下編譯帶C代碼的go程序,你首先需要下載并安裝MinGW或者Cygwin。
2、首選安裝MinGW。在安裝MinGW之后,記得要把MinGW安裝目錄\bin路徑設(shè)置在path環(huán)境變量里面,以便能在dos窗口下直接調(diào)用gcc。
3、下載一個(gè)gowin-env。下載地址:gowin-env。下載后解壓到某個(gè)目錄下,例如:C:\gowin-env. 然后,編輯go-env.bat。配置相關(guān)的go參數(shù)。例如,我的配置是:
set GOARCH=386
set GOOS=windows
set GOROOT=c:\go
set GOBIN=%GOROOT%\bin
set GOPATH=%GOROOT%;F:\workspace\goSample01;
設(shè)置好go-env.bat后,就可以點(diǎn)擊Console.bat來啟動(dòng)編譯和運(yùn)行窗口。
4、編寫一個(gè)帶C代碼的go程序。例如,testc.go
5、編譯
例如:
go build -compiler gccgo test_c.go
運(yùn)行調(diào)用C代碼的go文件(可選)
1、testc.go.
創(chuàng)建rand目錄,然后在rand里面創(chuàng)建testc.go. 代碼如下:
package rand
/*
//
#include stdio.h
*/
import "C"
func PrintHello() {
C.puts(C.CString("Hello, world\n"))
}
2、a.go
在rand下創(chuàng)建a.go.代碼如下:
package rand
import "fmt"
func SayHello(name string){
fmt.Println(name)
}
3、test_import.go
在rand的上一級(jí)創(chuàng)建test_import.go。代碼如下:
package main
import "./rand"
func main(){
rand.SayHello("tom")
rand.PrintHello()
}
4、運(yùn)行test_import.go
go run test_import.go
在測(cè)試其它幾個(gè)C代碼的時(shí)候,發(fā)現(xiàn)windows版本的cgo還有些編譯問題,同樣的代碼轉(zhuǎn)移到蘋果的XCODE下就沒有問題。后來終于發(fā)現(xiàn)原因了,原來有些例子是unix平臺(tái)下的,而在windows平臺(tái)下,方法名和參數(shù)需要做調(diào)整。
例如:下面代碼在windows下編譯報(bào)一堆錯(cuò)誤。
package rand
/*
#include stdlib.h
*/
import "C"
func Random() int {
return int(C.random())
}
func Seed(i int) {
C.srandom(C.uint(i))
}
這里需要把return int(C.random()) 修改為“return int(C.rand())”
C.srandom(C.uint(i))修改為“C.srand(C.uint(i))”編譯就OK了。
具體步驟:
1、去官網(wǎng)下載go1.1.2的tarball,一般下載到tem目錄
2、打開終端cd /usr/local, tar -zxvf go1.1.2.linux-386.tar.gz
將源碼文件解壓縮到/usr/local目錄,如果解壓到其他目錄,需要自己設(shè)置GOROOT
3、安裝gcc工具,因?yàn)間olang有些功能是使用c寫
sudo apt-get install bison gawk gcc libc6-dev make
4、$ cd go/src,$ ./all.bash
運(yùn)行bash腳本,如果運(yùn)行正常會(huì)獲得你的操作系統(tǒng)和cpu信息,自動(dòng)編譯安裝
5、將export PATH=$PATH:/usr/local/go/bin 寫入$HOME/.profile
最后進(jìn)行測(cè)試輸入go version 會(huì)顯示go1.1.2 linux/386
1、編譯vimgdb
下載vimgdb73和vim73
mkdir -p ./tmp
cd tmp
tar zxvf ../vim-7.3.tar.gz
unzip ../vimgdb-for-vim7.3-master.zip
mv vimgdb-for-vim7.3-master vimgdb-for-vim7.3
patch -p0 vimgdb-for-vim7.3/vim73.patch
cd vim73
安裝依賴
sudo apt-get install build-essential
sudo apt-get build-dep vim-gtk
sudo apt-get install libncurses5-dev
安裝
// 這里直接執(zhí)行make的操作
make
sudo make install
安裝vimgdb runtime
cd ../vimgdb-for-vim7.3
cp vimgdb_runtime ~/.vim/bundle
打開vim
:helptags ~/.vim/bundle/vimgdb_runtime/doc " 生成doc文件
添加配置.vimrc
" vimgdb插件
run macros/gdb_mappings.vim
在vim中執(zhí)行g(shù)db時(shí),報(bào) “Unable to read from GDB pseudo tty” 的錯(cuò)誤,因?yàn)闆]有安裝 gdb ,所以安裝gdb
sudo apt-get install gdb
2、安裝vundle
set up vundle
$ git clone ~/.vim/bundle/vundle
Configure Plugins
在.vimrc文件的開頭添加下面的內(nèi)容,有些不是必須的,可以注掉
set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" alternatively, pass a path where Vundle should install plugins
"let path = '~/some/path/here'
"call vundle#rc(path)
" let Vundle manage Vundle, required
Plugin 'gmarik/vundle'
" The following are examples of different formats supported.
" Keep Plugin commands between here and filetype plugin indent on.
" scripts on GitHub repos
Plugin 'tpope/vim-fugitive'
Plugin 'Lokaltog/vim-easymotion'
Plugin 'tpope/vim-rails.git'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" scripts from
Plugin 'L9'
Plugin 'FuzzyFinder'
" scripts not on GitHub
Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
Plugin ''
" ...
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
"filetype plugin on
"
" Brief help
" : PluginList - list configured plugins
" : PluginInstall(!) - install (update) plugins
" : PluginSearch(!) foo - search (or refresh cache first) for foo
" : PluginClean(!) - confirm (or auto-approve) removal of unused plugins
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Plugin commands are not allowed.
" Put your stuff after this line
Install Plugins
Launch vim and run
: PluginInstall
vim +PluginInstall +qall
3、官方vim-lang插件
Config vim file .vimrc,Add content bellow in bottom of the file
" 官方的插件
" Some Linux distributions set filetype in /etc/vimrc.
" Clear filetype flags before changing runtimepath to force Vim to
" reload them.
filetype off
filetype plugin indent off
set runtimepath+=$GOROOT/misc/vim
filetype plugin indent on
syntax on
autocmd FileType go autocmd BufWritePre Fmt
4、代碼補(bǔ)全的插件gocode
配置go的環(huán)境變量,比如我的配置,GOPATH變量是必須要配置的,PATH中必須把GOPATH的bin也添加進(jìn)去,否則沒有自動(dòng)提示,會(huì)提示找不到模式
export GOROOT=/usr/local/go
export GOPATH=/data/app/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
Set up gocode
Then you need to get the appropriate version of the gocode, for 6g/8g/5g compiler you can do this:
go get -u github.com/nsf/gocode (-u flag for "update")
Configure vim in .vimrc file
Plugin 'nsf/gocode', {'rtp': 'vim/'}
Install Plugins
Launch vim and run
: PluginInstall
vim +PluginInstall +qall
寫一個(gè)helloword程序,輸入fmt后按C-xC-o如果能看到函數(shù)的聲明展示出來,說明安裝是正確的。
4、代碼跳轉(zhuǎn)提示godef
Set up godef
go get -v code.google.com/p/rog-go/exp/cmd/godef
go install -v code.google.com/p/rog-go/exp/cmd/godef
git clone ~/.vim/bundle/vim-godef
Configure vim in .vimrc file
Bundle 'dgryski/vim-godef'
Install Plugins
Launch vim and run
: PluginInstall
vim +PluginInstall +qall
5、代碼結(jié)構(gòu)提示gotags
Set up gotags
go get -u github.com/jstemmer/gotags
Put the following configuration in your vimrc:
Bundle 'majutsushi/tagbar'
nmap :TagbarToggle
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
命令模式下按在右邊就會(huì)顯示當(dāng)前文件下的函數(shù)名,結(jié)構(gòu)體名等等,光標(biāo)放到相應(yīng)的tag上,按回車可以快速跳到程序中的相應(yīng)位置。
再次按會(huì)關(guān)閉tag窗口。
PS:本地的.vimrc的配置
" 插件管理器 vundle
set nocompatible " be iMproved, required
filetype off " required
" set the runtime path to include Vundle and initialize
set rtp+=~/.vim/bundle/vundle/
call vundle#rc()
" alternatively, pass a path where Vundle should install plugins
"let path = '~/some/path/here'
"call vundle#rc(path)
" let Vundle manage Vundle, required
Plugin 'gmarik/vundle'
" The following are examples of different formats supported.
" Keep Plugin commands between here and filetype plugin indent on.
" scripts on GitHub repos
" Plugin 'tpope/vim-fugitive'
" Plugin 'Lokaltog/vim-easymotion'
" Plugin 'tpope/vim-rails.git'
" The sparkup vim script is in a subdirectory of this repo called vim.
" Pass the path to set the runtimepath properly.
" Plugin 'rstacruz/sparkup', {'rtp': 'vim/'}
" scripts from
" Plugin 'L9'
" Plugin 'FuzzyFinder'
" scripts not on GitHub
" Plugin 'git://git.wincent.com/command-t.git'
" git repos on your local machine (i.e. when working on your own plugin)
" Plugin ''
" ...
"
filetype plugin indent on " required
" To ignore plugin indent changes, instead use:
" filetype plugin on
"
" Brief help
" : PluginList - list configured plugins
" : PluginInstall(!) - install (update) plugins
" : PluginSearch(!) foo - search (or refresh cache first) for foo
" : PluginClean(!) - confirm (or auto-approve) removal of unused plugins
"
" see :h vundle for more details or wiki for FAQ
" NOTE: comments after Plugin commands are not allowed.
" Put your stuff after this line
syntax on
" ********************************************************************
" 這里省略了其它不相關(guān)的插件
" vimgdb插件
run macros/gdb_mappings.vim
" 官方的插件
" Some Linux distributions set filetype in /etc/vimrc.
" Clear filetype flags before changing runtimepath to force Vim to
" reload them.
filetype off
filetype plugin indent off
set runtimepath+=$GOROOT/misc/vim
filetype plugin indent on
syntax on
autocmd FileType go autocmd BufWritePre buffer Fmt
" 代碼補(bǔ)全的插件
Bundle 'Blackrush/vim-gocode'
" 代碼跳轉(zhuǎn)提示
Bundle 'dgryski/vim-godef'
" 代碼結(jié)構(gòu)提示
Bundle 'majutsushi/tagbar'
nmap F8 :TagbarToggleCR
let g:tagbar_type_go = {
\ 'ctagstype' : 'go',
\ 'kinds' : [
\ 'p:package',
\ 'i:imports:1',
\ 'c:constants',
\ 'v:variables',
\ 't:types',
\ 'n:interfaces',
\ 'w:fields',
\ 'e:embedded',
\ 'm:methods',
\ 'r:constructor',
\ 'f:functions'
\ ],
\ 'sro' : '.',
\ 'kind2scope' : {
\ 't' : 'ctype',
\ 'n' : 'ntype'
\ },
\ 'scope2kind' : {
\ 'ctype' : 't',
\ 'ntype' : 'n'
\ },
\ 'ctagsbin' : 'gotags',
\ 'ctagsargs' : '-sort -silent'
\ }
前言:
本Python,學(xué)golang,下筆記,供分享
Go語言,我們可以簡(jiǎn)單的寫成 Golang
自行百度吧,不難