大家都知道,在学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,效果图如下:
如果你是新手的话,我希望对你有帮助。