閱讀484 返回首頁    go 阿裏雲 go 技術社區[雲棲]


Go語言開發環境配置教程及使用

傳說go語言的最佳開發環境是蘋果的XCODE,我測試的結果確實如此。需要用CGO編譯帶C代碼的go程序的朋友,建議首選蘋果的XCODE環境。Windows環境下配置CGO編譯非常麻煩,因為Go的文檔例子大多以UNIX為例子,所以有些C代碼在windows下無法編譯,需要修改代碼。

我用到的go語言版本是最新的發布版本go 1。點此下載go1.1.2最新版

國人翻譯的go官方安裝文檔的鏈接:

https://code.google.com/p/golang-china/wiki/Install 。這個官方安裝文檔感覺有些過時了,僅供參考。

還有一個《學習Go語言》中文版可以參考:地址:https://www.mikespook.com/learning-go/comment-page-1/#comment-4000

下麵是我在winxp下配置go語言開發環境的一些記錄:

Windows環境下配置go(必需)
1、 下載go的zip文件。並且一定要把文件解壓到c:\go目錄下。

2、 配置windows的高級環境變量。包括:GOROOT、GOOS、GOBIN、GOARCH。並且在path變量裏麵把c:\go\bin加入。以便可以在命令行直接運行go命令。

(ps:原作者顯然是認為我們是高手了,所以這麼簡略,但是我真心是菜鳥,沒看到原作者的意思,卡在這裏了,好在找到另一篇文章:https://devbbs.doit.com.cn/thread-29077-1-1.html,不過它是基於linux但是很有參考意義)

它的設置是:

https://devbbs.doit.com.cn/thread-29077-1-1.html

安裝Go之前需要安裝mercurial,這是Go的版本控製工具,可以直接通過ubuntu的安裝程序搜索添加。
然後為當前用戶定義下麵幾個bash變量。在ubuntu下敲入cd $HOME,一般是/home/username,然後敲vim .bashrc,修改.bashrc
在這個文件中添加如下(我的cpu是intel,所以是GOARCH是386,具體可參考golang.org說明:
GOROOT="$HOME/Go"
export GOROOT
GOOS=linux
export GOOS
GOARCH=386
export GOARCH
GOBIN="$HOME/bin"
export GOBIN
在幫助裏寫GOBIN是可選的,但我試了,必須有。
在.bashrc最後還要加上這一行,保證能正確編譯安裝。
PATH=$PATHGOBIN

也就是說,我現在的情況是: GOROOT = c:\go、GOOS=windows、GOARCH=386)

舉例:我的機器:

GOPATH= c:\go;c:\go\src;F:\workspace\goSample01;

GOBIN=c:\go\bin;F:\workspace\goSample01\bin;

其中,c:\go是go的安裝路徑;

F:\workspace\goSample01是我寫的go語言項目的工程目錄;

     F:\workspace\goSample01\bin 是 go 語言項目的工程目錄下的可執行文件路徑;
3、 在完成環境變量配置後,打開一個命令行窗口,直接輸入go,然後回車,看看是否出現go的幫助信息。如果出現,那麼go的基本環境就OK了。

注意:這個基本環境不包含開發工具,也不能直接編譯帶C代碼的go程序。

4、(可選)為了支持Import遠程包,最好裝個gomingw。下載地址:https://code.google.com/p/gomingw/downloads/list。 如果下的是壓縮包,請把它解壓到C盤。例如,C:\gowin-env。裏麵有個Console.bat是以後使用go get的環境。舉例:有個文件a.go,裏麵import (

   "fmt"

   "github.com/astaxie/beedb"

_ "github.com/ziutek/mymysql/godrv"

為了編譯該a.go文件,需要啟動Console.bat,然後在該命令行窗口,進入c:\go\src目錄下,執行go get github.com/astaxie/beedb

Go get github.com/ziutek/mymysql/godrv .

Go 會自動下載該遠程包並編譯和安裝這些包。
配置goclipse(可選)
(如果不喜歡eclipse開發工具,請跳過這個配置。)

1、 下載並安裝goclipse插件。Goclipse是go語言for eclipse的插件,下載地址:https://code.google.com/p/goclipse/

2、 啟動eclipse並創建go項目。然後寫個最簡單的helloworld.go文件,並運行。代碼如下:

package main import "fmt" func main() {         fmt.Printf("hello, world") }
配置gocode(可選)
如果不需要go語法輔助和eclipse裏麵的(按ALT+/)彈出go語言自動輔助功能,請跳過這個配置。

1、 下載gocode的zip文件,解壓後放在go的bin目錄下。

2、 下載並安裝Git軟件。並且在path裏麵配置git的執行路徑。例如c:\git\bin

3、 在命令行執行:go build .\gocode。如果一切正常,那麼將會編譯生成一個gocode.exe文件在go的bin目錄下。如果編譯失敗,那麼就轉第4步。

4、 如果第3步直接編譯gocode源文件成功,那就直接到第5步。否則,就需要通過git下載gocode源文件,然後再編譯。在命令行執行:go get -u github.com/nsf/gocode 。就會生成gocode.exe文件。

5、 在goclipse插件裏麵指定gocode的路徑。就可以在elcipse裏麵調用gocode來幫助寫編碼了。

從開發工具這塊看,go語言還不夠成熟,開發工具都還不完善,有待改進。

下載go-tour教程源代碼(可選)
Google有個在線運行go語言的教程(https://tour.golang.org/#2),很不錯。支持在web上直接運行大部分的go程序,想了解這個教程的源代碼的朋友可以通過以下方式獲取。如果沒興趣,可以跳過這個步驟。

1、 下載安裝Mercurial軟件。

2、 在命令行下輸入:

hg clone https://qinhui99@code.google.com/r/qinhui99-go-tour/

https://qinhui99@code.google.com/r/qinhui99-go-tour/ 這個URL是我從google的go-tour源代碼的一個clone。作為測試用的。如果把http改成https協議,下載就會失敗。搞不懂。

編譯帶調用C代碼的go文件(可選)
1、為了在windows下編譯帶C代碼的go程序,你首先需要下載並安裝MinGW或者Cygwin。

2、首選安裝MinGW。在安裝MinGW之後,記得要把MinGW安裝目錄\bin路徑設置在path環境變量裏麵,以便能在dos窗口下直接調用gcc。

3、下載一個gowin-env。下載地址:gowin-env。下載後解壓到某個目錄下,例如:C:\gowin-env. 然後,編輯go-env.bat。配置相關的go參數。例如,我的配置是:

set GOARCH=386

set GOOS=windows

set GOROOT=c:\go

set GOBIN=%GOROOT%\bin

set GOPATH=%GOROOT%;F:\workspace\goSample01;

設置好go-env.bat後,就可以點擊Console.bat來啟動編譯和運行窗口。

4、編寫一個帶C代碼的go程序。例如,testc.go

5、編譯

例如:

go build -compiler gccgo test_c.go

運行調用C代碼的go文件(可選)
1、 testc.go.

創建rand目錄,然後在rand裏麵創建testc.go. 代碼如下:

package rand

/*

//

#include <stdio.h>

*/

import "C"

func PrintHello() {

C.puts(C.CString("Hello, world\n"))

}

2、 a.go

在rand下創建a.go.代碼如下:

package rand

import "fmt"

func SayHello(name string){

      fmt.Println(name)

}

3、 test_import.go

在rand的上一級創建test_import.go。代碼如下:

package main



import "./rand"



func main(){

      rand.SayHello("tom")

      rand.PrintHello()

}



4、 運行test_import.go

go run test_import.go



在測試其它幾個C代碼的時候,發現windows版本的cgo還有些編譯問題,同樣的代碼轉移到蘋果的XCODE下就沒有問題。後來終於發現原因了,原來有些例子是unix平台下的,而在windows平台下,方法名和參數需要做調整。

例如:下麵代碼在windows下編譯報一堆錯誤。

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了。

最後更新:2017-04-03 12:56:21

  上一篇:go 怎麼在csdn中找到自己發布的帖子
  下一篇:go 諾基亞將更名為微軟移動