這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。
大家都知道,在學golang的時候,大家都會去關注謝大的beego快速開發架構。
首先,小弟是win7 32bit系統,在這裡,我要把我學習golang的過程和小心得記錄起來。
相信想學的人一定會早早安裝好了go,簡單輕量便捷,沒有的話可以到這裡下載。
在你安裝好GO 1.2的時候,你會慢慢發現windows環境下你要做的事太多了。
如果僅僅只看教程來的話,我想你可能也會像我遇到一些問題。後面會提到。
這時候你又需要一個Golang的IDE,雖然大家都說sublime text比較好用,不過我之前也沒用過,對這個不瞭解。所以我選擇官方推薦的LiteIDE x20.1。
只所以會去寫這篇文章,是因為我折騰了好久,對這過程有了點過度的興奮在裡面。
在你安裝完GO後,你會發現在CMD下是可以識別GO的 command Prompt。
沒錯,因為在預設安裝目錄下C:\Go下有bin,裡面有個go.exe、godoc.exe、gofmt.exe。
我忘了他們什麼時候存在了。我只記得我曾經為了看go的官方文法教程,我在cmd執行了go doc(無名的視頻、謝大的書都提到)。
首先我們都會去cmd: go env進行環境查看。如下:
就這樣,我是從這裡開始的。這裡面要注意的環境變數有:GOPATH,GOBIN,GOROOT.
因為我一開始GOPATH,是沒有的。所以我建立了F:\Go\Development。
反過來,也如果你對開源語言有疑慮的話,反正我是帶疑慮進門的。我第一次接觸到git,HG。
因為我想瞭解github上的go世界。所以,我必要用到git。
不得不提git是多麼的好用,好用到我啥command prompt都老愛往上敲。。(新手的確會這樣)
當我在git:go get 的時候,我竟然發現了還是會報錯:GOPATH not found.類似的問題。
我就回頭查看 GOPATH是否存在,是否錯誤。。發現,存在、沒錯。
接著呢,我就鬱悶了。奇怪,好好的會報GOPATH not set的錯誤。
後來發現,有個群友也遇到過這樣的問題。原來,win7下 使用者變數也要設定。終於搞定了!
接著,我很簡單的敲打consolo的代碼,哎。奇怪,每次都在USER/UserName下生產一個UserName.exe。。
這也是我今天坑人的原因。原來GOBIN是空的。。暈倒,教程也是這樣。。算了,至少還有個UserName.exe給我輸出。
等到我打算寫個簡單的web版hello world的時候,我發現奇怪了。go是怎麼解決web項目上的路由機制?帶著疑慮走著。。
看來謝大的書,有一章‘Web基礎’。裡面講到的,編譯運行後的exe執行後的原理,好比GO內建的IIS。也是受益不淺。
可我更在乎的是go在開發時候的web原理,也就是說:我下了beego了,產生beego得不到bee.exe。。
我也是糊塗就是了,在編譯beego的時候我去git:go get幾個packape。 編譯通過,我又go build 、 install beego。可是還是沒見著beego.exe。。
後來經思源大哥的指點,我知道了,原來我GOBIN是空的。set gobin=%goroot%\bin。記得我的電腦-屬性-環境變數。
這麼重要的事,我都不懂。
接著我發現GOPATH下的bin出現了個bee.exe。。好吧,莫非這傢伙決定了我的cmd bee command的識別。。
哎,按理說我set gobin之後,應該無論如何go build都會產生exe的才對。
其實我一直都錯了,思源大哥說只要在go get就會自動install,自動產生exe了。
可是我沒有這樣。。接著 在我一個個疑慮的出現,我也去查看PATH:echo %PATH% 。發現是C:\GO\BIN..果斷改成%gobin%。
這時候我也做了個測試,gobin 改成%gopath%\bin 發現連Go cmd都識別不了。
其實也是我不懂,在beego編譯通過的過程,我們要去go get bee的。bee的build install 才能造就bee.exe,bee.exe在GOPATH\bin下,我以為是對的。
可是cmd重啟依然識別不到bee command。
然後我就火了,直接把bee copy到Gobin下。。接著,cmd:bee ,爽死哥哥了,這下可認識了!
我只是建立個web的hello world,然後我cmd:bee new hello.
有點疑慮,,思源兄說:beego 也是嚴格的。 也就是說,只有在goPath路徑下才允許建立beego web。當然,GOPATH允許多個。
哈哈· 終於successfully!
因為我是新手,所以又很多疑慮在裡面。然後慢慢的在思源大哥的指點下,我也完善了這一系列的開發環境。
為了不影響連接埠衝突,app.conf連接埠被我改成8089,如下:
如果你是新手的話,我希望對你有協助。