1.下載go的windows下的安裝包:
我們提供的服務(wù)有:成都做網(wǎng)站、網(wǎng)站建設(shè)、微信公眾號(hào)開(kāi)發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、石獅ssl等。為上千企事業(yè)單位解決了網(wǎng)站和推廣的問(wèn)題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的石獅網(wǎng)站制作公司
也可以下載源代碼,用MinGW編譯。先配置好MinGW的環(huán)境,再運(yùn)行all.bat即可。
MingW:
2.下載gocode,用于go的補(bǔ)全提示:
gocode 的github地址:
要安裝git,在windows下,通常用msysgit。
再在cmd下安裝:
go get -u github.com/nsf/gocode
也可以下載代碼,直接用go build來(lái)編譯,會(huì)生成gocode.exe。
3.在eclipse中安裝插件:
4.配置插件:
(1).配置go的編譯器
(2).配置gocode(可選),這里我用的是eclipse插件自帶的gocode。
(3).配置gdb,做調(diào)試用(可選)
如果安裝了MingW,可以在安裝目錄下找到gdb。
5.測(cè)試是否成功
新建一個(gè)go工程,再建立一個(gè)hello.go。如下圖:
gdb調(diào)試如下(要在console中用輸入命令來(lái)調(diào)試):
6.其它
2012年3月31日:
目前這個(gè)eclipse插件,只能把代碼放在cmd包中才能運(yùn)行。
貌似現(xiàn)在流行的是Sublime Text2 + gocode。Sublime Text也的確比較好用。
======================
Eclipse平臺(tái)下配置Go語(yǔ)言開(kāi)發(fā)環(huán)境(Win7)
《Go語(yǔ)言編程》中寫(xiě)到:“從功能和易用性等方面考慮, Eclipse+GoEclipse、LiteIDE這兩個(gè)環(huán)境在所有IDE里面是表現(xiàn)最好的”,所以筆者打算采用Eclipse+GoEclipse開(kāi)發(fā)環(huán)境。
Eclipse平臺(tái)下配置Go語(yǔ)言開(kāi)發(fā)環(huán)境步驟:
1、安裝JDK和Eclipse
建議JDK1.6及以上版本。Eclipse3.6及以上版本。
2、安裝GoEclipse插件
在Eclipse中點(diǎn)擊菜單“Help”-》“Install New Software”打開(kāi)如下對(duì)話框,添加go插件的安裝地址:,
按提示一步一步操作即可,下載時(shí)可能會(huì)遇到網(wǎng)絡(luò)問(wèn)題,可使用goagent或其他代理。
3、安裝并配置Go的編譯器
下載地址:
下載時(shí)請(qǐng)注意版本,應(yīng)選擇windows-386的版本。
安裝完后重啟Eclipse,并通過(guò)菜單項(xiàng)“Window”-》“Preferences”-》“Go”打開(kāi)Go語(yǔ)言的配置選項(xiàng)框。如下圖:
選擇Go的安裝路徑即可,如筆者的安裝路徑是F:\Work\Go
4、配置調(diào)試器(可選)
需要先安裝MinGW,下載地址:
安裝完之后,通過(guò)菜單項(xiàng)“Window”-》“Preferences”-》“Go”-》“Debugger”打開(kāi)調(diào)試器的配置選項(xiàng)框。
將GDB路徑配置為:MinGW安裝目錄下的gdb.exe文件即可。
5、配置代碼自動(dòng)補(bǔ)全(可選)
需要配置gocode,可使用goEclipse插件自帶的版本,也可以自己下載:
筆者使用的是goEclipse插件自帶的版本,配置方式如下:
通過(guò)菜單項(xiàng)“Window”-》“Preferences”-》“Go”-》“Gocode”打開(kāi)配置選項(xiàng)框。
將Gocode的路徑配置為:goEclipse的安裝路徑下的gocode.exe文件,如
F:\Work\eclipse\plugins\com.googlecode.goclipse.gocode_0.7.6.v450\tools\windows_386\gocode.exe
6、配置支持Import遠(yuǎn)程包(可選)
為了支持Import遠(yuǎn)程包,最好裝個(gè)gowin-env。下載地址:。 如果下的是壓縮包,請(qǐng)把它解壓到C盤(pán)。例如,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)程包并編譯和安裝這些包。
7、go install: no install location for directory *** outside GOPATH錯(cuò)誤的處理
由于每一個(gè)Go程序都必須包含一個(gè)main包以及一個(gè)main()函數(shù),因此如果沒(méi)有main包就會(huì)導(dǎo)致上述錯(cuò)誤。
What Doesn't Kill Me Makes Me Stronger
步驟如下:
1. 申請(qǐng)Google Appengine并創(chuàng)建appid。
2. 下載goagent穩(wěn)定版
3. 修改local\proxy.ini中的[gae]下的appid=你的appid(多appid請(qǐng)用|隔開(kāi))
4. 修改server\app.yaml下的your_appid為你的appid(每次只能上傳單個(gè)appid)
5. 先啟動(dòng)local\goagent.exe,雙擊server\upload.bat(Mac/Linux上傳方法請(qǐng)見(jiàn)FAQ),上傳成功后即可使用了(代理地址127.0.0.1:8087)
步驟如下:
1.申請(qǐng)Google Appengine并創(chuàng)建appid。
2.下載goagent穩(wěn)定版
3.修改local\proxy.ini中的[gae]下的appid=你的appid(多appid請(qǐng)用
隔開(kāi))
4.修改server\app.yaml下的your_appid為你的appid(每次只能上傳單個(gè)appid)
5.先啟動(dòng)local\goagent.exe,雙擊server\upload.bat(Mac/Linux上傳方法請(qǐng)見(jiàn)FAQ),上傳成功后即可使用了
地址:
pagent是一個(gè)多進(jìn)程模型的golang庫(kù),具有以下特點(diǎn):
簡(jiǎn)單: 父子進(jìn)程只通過(guò)stdin和stdout來(lái)交互
安全: 多進(jìn)程很安全,子進(jìn)程掛掉一個(gè)不影響其他子進(jìn)程
解耦:子進(jìn)程交互和業(yè)務(wù)分離
例子:
package main
import (
"fmt"
"time"
"github.com/adwpc/pagent"
)
type MyBiz struct {
pagent.Master
}
func NewBiz() *MyBiz {
return MyBiz{}
}
func (a *MyBiz) BizRunning(id, str string) error {
fmt.Println("[MyBiz BizRunning] str=" + str)
return nil
}
func (a *MyBiz) BizFinish(id string, err error) error {
fmt.Println("[MyBiz BizFinish] id=" + id)
return err
}
func main() {
a := NewBiz()
fmt.Println("worker1-------------------------")
a.GetWorker("worker1").Start("bash", a.BizRunning, a.BizFinish)
a.GetWorker("worker1").Input("ls")
time.Sleep(1 * time.Second)
a.DelWorker("worker1")
fmt.Println("worker2-------------------------")
a.GetWorker("worker2").Start("ifconfig", nil, a.BizFinish)
time.Sleep(1 * time.Second)
a.DelWorker("worker2")
fmt.Printf("end!----------------------------")
}