From 97fa89b9326648a53ff5a732e06a3163dd2c29e5 Mon Sep 17 00:00:00 2001 From: Oling Cat Date: Wed, 19 Sep 2012 18:40:31 +0800 Subject: [PATCH 1/4] Changed some sentence. --- 1.1.md | 14 ++++----- 1.3.md | 91 +++++++++++++++++++++++++++++----------------------------- 1.md | 1 + 3 files changed, 54 insertions(+), 52 deletions(-) diff --git a/1.1.md b/1.1.md index 7018ab2a..f3cb913f 100644 --- a/1.1.md +++ b/1.1.md @@ -65,7 +65,7 @@ Linux系统用户可通过在Terminal中执行命令`uname -a`来查看系统信 首先你必须安装了hg工具,然后执行如下代码: - 假设目前在当前用户的`home`目录下 + 假设目前在当前用户的`home`目录下 hg clone -u release https://code.google.com/p/go cd go/src @@ -75,20 +75,20 @@ Linux系统用户可通过在Terminal中执行命令`uname -a`来查看系统信 上面写的是Unix风格的,Windows下安装方式类似,只不过是运行all.bat,调用的编译器是MinGW的 gcc。 - 然后设置PATH,`export PATH=$PATH:$HOME/go/bin` + 然后设置PATH,`export PATH=$PATH:$HOME/go/bin` - 看到如下图片说明已经安装成功 + 看到如下图片说明已经安装成功 ![](images/1.1.mac.png?raw=true) 如果出现go的Usage信息,那么说明go已经安装成功了;如果出现该命令不存在,那么可以检查一下自己的PATH环境变中是否包含了go的安装目录。 ## links - * [目录]() - * 上一节: [Go环境配置](<1.md>) - * 下一节: [GOPATH 与工作空间](<1.2.md>) + * [目录]() + * 上一节: [Go环境配置](<1.md>) + * 下一节: [GOPATH 与工作空间](<1.2.md>) ## LastModified - * $Id$ + * $Id$ [downlink]: http://code.google.com/p/go/downloads/list "Go安装包下载" diff --git a/1.3.md b/1.3.md index fe573d94..0d13b1ce 100644 --- a/1.3.md +++ b/1.3.md @@ -1,99 +1,100 @@ -# 1.3 GO 命令 +# 1.3 Go 命令 -##GO 命令 +##Go 命令 - go语言自带有一套完整的命令操作工具,你可以在你的命令行下面输入`go`,就会出现如下的一些信息 + Go语言自带有一套完整的命令操作工具,你可以通过在命令行中执行`go`来查看它们: ![](images/1.3.go.png?raw=true) - 这些命令对于我们平时编写的代码非常有用,接下来我将就平常用到比较多的几个命令进行简要的讲解 + 这些命令对于我们平时编写的代码非常有用,接下来就让我们了解一些常用的命令。 ##go build - 这个命令主要是用来测试编译的,在包编译过程中,若有必要会同时去编译相应的关联包 + 这个命令主要用于测试编译。在包的编译过程中,若有必要,会同时编译与之相关联的包。 - - 如果是pkg包,例如第一章里面写的mymath包,你执行`go build`的时候,不会产生任何的文件,因为他不会默认帮你去安装,如果你需要在pkg下面生成相应的文件,那么就需要执行`go install` - - 如果你的程序是main包,那么就会在你的目录下面生成一个可执行文件,但是不会生成文件到bin目录下面 + - 如果是普通包,就像我们在1.2节中编写的`mymath`包那样,当你执行`go build`之后,它不会产生任何文件。如果你需要在`$GOPATH/pkg`下生成相应的文件,那就得执行`go install`了。 - 如果某个项目文件夹下有多个文件,又只想指定编译某个文件,这个命令可以指定编译文件,例如`go build a.go`,`go build`命令默认编译目录下全部的go文件 + - 如果是`main`包,当你执行`go build`之后,它就会在当前目录下生成一个可执行文件。如果你需要在`$GOPATH/bin`下生成相应的文件,同样需要执行`go install`。 - 你也可以指定编译输出文件的名称,例如第一章的那个mathapp应用,我可以指定`go build -o astaxie.exe`,默认情况是你的package名,就是你的文件夹名称 - - (注:实际上,package名在[go语言规范](https://golang.org/ref/spec)中指代码中“package”后使用的名称,此名称可以与文件夹名不同。默认生成的可执行文件名是文件夹名。) - - go build会忽略目录下以”_“开头的go文件,还会忽略点开头的的go文件。 + - 如果某个项目文件夹下有多个文件,而你只想编译某个文件,就可在`go build`之后加上文件名,例如`go build a.go`;`go build`命令默认会编译当前目录下的所有go文件。 - 如果你的源代码里面针对不同系统需要不同的逻辑处理,那么你可以根据不同的系统来命名文件,例如有一个读取数组的文件在不同的系统可能有如下几个文件 + - 你也可以指定编译输出的文件名。例如1.2节中的`mathapp`应用,我们可以指定`go build -o astaxie.exe`,默认情况是你的package名,就是你的文件夹名称。 - array_linux.go - array_darwin.go - array_windows.go - array_freebsd.go + (注:实际上,package名在[Go语言规范](https://golang.org/ref/spec)中指代码中“package”后使用的名称,此名称可以与文件夹名不同。默认生成的可执行文件名是文件夹名。) -go build的时候会选择性的编译系统名结尾的文件(linux、darwin、windows、freebsd),例如linux系统下面编译只会选择array_linux.go文件,其他系统命名后缀文件全部忽略。 + - go build会忽略目录下以“_”或“.”开头的go文件。 + + - 如果你的源代码针对不同的操作系统需要不同的处理,那么你可以根据不同的操作系统后缀来命名文件。例如有一个读取数组的程序,它对于不同的操作系统可能有如下几个源文件: + + array_linux.go + array_darwin.go + array_windows.go + array_freebsd.go + + `go build`的时候会选择性地编译以系统名结尾的文件(linux、darwin、windows、freebsd)。例如Linux系统下面编译只会选择array_linux.go文件,其它系统命名后缀文件全部忽略。 ##go clean - 这个命令是用来移除当前源码包里面编译的文件的,这些文件包括 - - _obj/ old object directory, left from Makefiles - _test/ old test directory, left from Makefiles - _testmain.go old gotest file, left from Makefiles - test.out old test log, left from Makefiles - build.out old test log, left from Makefiles - *.[568ao] object files, left from Makefiles - - DIR(.exe) from go build - DIR.test(.exe) from go test -c - MAINFILE(.exe) from go build MAINFILE.go + 这个命令是用来移除当前源码包里面编译的文件的。这些文件包括 + + _obj/ 旧的object目录,由Makefiles遗留 + _test/ 旧的test目录,由Makefiles遗留 + _testmain.go 旧的gotest文件,由Makefiles遗留 + test.out 旧的test记录,由Makefiles遗留 + build.out 旧的test记录,由Makefiles遗留 + *.[568ao] object文件,由Makefiles遗留 + + DIR(.exe) 由go build产生 + DIR.test(.exe) 由go test -c产生 + MAINFILE(.exe) 由go build MAINFILE.go产生 我一般都是利用这个命令进行清除编译文件,然后github递交源码,在本机测试的时候这些编译文件都是和系统相关的,但是对于源码管理来说没必要 ##go fmt - 有过c/c++经验的读者会知道,一些人经常为代码采取k&r风格还是 ansi风格而争论不休,在go中,代码有标准风格.由于之前已经有的一些习惯或其他的原因我们常将代码写成ansi风格或者其他更合适自己的格式,这将为人们在阅读别人的代码时添加不必要的负担,所以go强制了代码格式( 比如左大括号必须放在行尾),不按照此格式的代码将不能编译通过,为了减少浪费在排版上的时间,go工具集中提供了一个 go fmt命令 它可以帮你格式化你写好的代码文件,使你写代码的时候不需要关心格式,你只需要在写完之后执行`go fmt 文件名.go`,你的代码就被修改成了标准格式,但是我平常很少用到这个命令,因为开发工具里面一般都带了保存时候自动格式化功能,这个功能其实在底层就是调用了`go fmt`。接下来的一节我将讲述两个工具,这两个工具都自带了保存文件自动化`go fmt`功能。 + 有过C/C++经验的读者会知道,一些人经常为代码采取K&R风格还是ANSI风格而争论不休。在go中,代码则有标准的风格。由于之前已经有的一些习惯或其它的原因我们常将代码写成ANSI风格或者其它更合适自己的格式,这将为人们在阅读别人的代码时添加不必要的负担,所以go强制了代码格式(比如左大括号必须放在行尾),不按照此格式的代码将不能编译通过,为了减少浪费在排版上的时间,go工具集中提供了一个`go fmt`命令 它可以帮你格式化你写好的代码文件,使你写代码的时候不需要关心格式,你只需要在写完之后执行`go fmt <文件名>.go`,你的代码就被修改成了标准格式,但是我平常很少用到这个命令,因为开发工具里面一般都带了保存时候自动格式化功能,这个功能其实在底层就是调用了`go fmt`。接下来的一节我将讲述两个工具,这两个工具都自带了保存文件时自动化`go fmt`功能。 ##go get - 这个命令是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code 、Launchpad ,这个命令在内部实际上分成了两步操作,第一步是下载源码包,第二步是`go install`,下载源码包go工具会自动根据不同的域名调用不同的源码工具,对应关系如下: + 这个命令是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code和Launchpad。这个命令在内部实际上分成了两步操作:第一步是下载源码包,第二步是执行`go install`。下载源码包的go工具会自动根据不同的域名调用不同的源码工具,对应关系如下: BitBucket (Mercurial Git) GitHub (Git) Google Code Project Hosting (Git, Mercurial, Subversion) Launchpad (Bazaar) - 所以为了`go get` 能正常工作,你必须确保安装了合适的 源码管理工具同时把这些命令加入你的path。其实`go get`支持自定义域名的功能,具体参见`go help remote` + 所以为了`go get` 能正常工作,你必须确保安装了合适的源码管理工具,并同时把这些命令加入你的PATH中。其实`go get`支持自定义域名的功能,具体参见`go help remote`。 ##go install - 这个命令在内部实际上分成了两步操作,第一步就是`go build`,然后就是把编译的东西copy到了pkg或者bin + 这个命令在内部实际上分成了两步操作:第一步是`go build`,第二步会把编译好的东西copy到`$GOPATH/pkg`或者`$GOPATH/bin`。 ##go test - 执行这个命令,会自动读取源码目录下面命名为`*_test.go`的文件,生成并运行测试用的可执行文件。输出的信息类似 + 执行这个命令,会自动读取源码目录下面名为`*_test.go`的文件,生成并运行测试用的可执行文件。输出的信息类似 ok archive/tar 0.011s FAIL archive/zip 0.022s ok compress/gzip 0.033s ... - 默认的情况下,不需要任何的参数,他会自动把你源码包下面所有test文件测试完毕,当然你也可以带上参数,详细的参考`go help testflag` + 默认的情况下,不需要任何的参数,它会自动把你源码包下面所有test文件测试完毕,当然你也可以带上参数,详情请参考`go help testflag` ##go doc - 很多人说go不需要任何的第三方文档,例如chm手册之类的(其实我已经做了一个了,[chm手册](https://github.com/astaxie/godoc) ),因为他内部就有一个很强大的文档工具 - + 很多人说go不需要任何的第三方文档,例如chm手册之类的(其实我已经做了一个了,[chm手册](https://github.com/astaxie/godoc)),因为它内部就有一个很强大的文档工具。 + 如何查看相应package的文档呢? 例如builtin包,那么执行`go doc builtin` 如果是http包,那么执行`go doc net/http` 查看某一个包里面的函数,那么执行`godoc fmt Printf` 也可以查看相应的代码,执行`godoc -src fmt Printf` - - 通过命令在命令行执行 godoc -http=:端口号 比如( godoc -http=:8080).然后在浏览器中打开 127.0.0.1:8080 你将会看到一个 golang.org的本地copy版本,通过它你可以查询pkg文档等其他内容,如果你设置了GOPATH,在pkg分类下,不但会列出标准包的文档,还会列出你本地GOPATH中所有项目的相关文档,这对于经常被墙奸的用户来说,是一个不错的选择 -##其他命令 + 通过命令在命令行执行 godoc -http=:端口号 比如`godoc -http=:8080`。然后在浏览器中打开`127.0.0.1:8080`,你将会看到一个golang.org的本地copy版本,通过它你可以查询pkg文档等其它内容。如果你设置了GOPATH,在pkg分类下,不但会列出标准包的文档,还会列出你本地`GOPATH`中所有项目的相关文档,这对于经常被墙的用户来说是一个不错的选择。 - go还提供了其他很多的工具,例如下面的这些工具 +##其它命令 + + go还提供了其它很多的工具,例如下面的这些工具 go fix 用来修复以前老版本的代码到新版本,例如go1之前老版本的代码转化到go1 go version 查看go当前的版本 @@ -104,7 +105,7 @@ go build的时候会选择性的编译系统名结尾的文件(linux、darwin、 ## links * [目录]() * 上一节: [GOPATH与工作空间](<1.2.md>) - * 下一节: [GO开发工具](<1.4.md>) + * 下一节: [Go开发工具](<1.4.md>) -## LastModified +## LastModified * $Id$ diff --git a/1.md b/1.md index f69aa801..d7cfb817 100644 --- a/1.md +++ b/1.md @@ -17,6 +17,7 @@ - 具有垃圾回收机制 - 跨平台,可交叉编译 - 还有更多…… + 总之是一种C+Python动静结合的好语言。 在本章中,我们将讲述Go的安装方法,以及如何配置项目信息。 From 732d996478b3268ce5ea684d711403bb83dff403 Mon Sep 17 00:00:00 2001 From: Oling Cat Date: Wed, 19 Sep 2012 19:25:52 +0800 Subject: [PATCH 2/4] Too many sentence need to change!!! --- 1.4.md | 106 ++++++++++++++++++++++++++++----------------------------- 1.5.md | 12 +++---- 2 files changed, 59 insertions(+), 59 deletions(-) diff --git a/1.4.md b/1.4.md index 425874c4..6d77f963 100644 --- a/1.4.md +++ b/1.4.md @@ -1,79 +1,79 @@ -#1.4 GO开发工具 +#1.4 Go开发工具 -本节我将介绍几个开发工具,它们都具有自动化提示,自动化fmt功能,因为它们都是跨平台的,所以安装步骤之类的都是通用的。 +本节我将介绍几个开发工具,它们都具有自动化提示,自动化fmt功能。因为它们都是跨平台的,所以安装步骤之类的都是通用的。 -##liteide +##LiteIDE - liteide这个工具是由我们国内牛人VFC写的,使用起来相当的方便,他支持代码自动提示、项目、项目编译等,[下载地址](http://code.google.com/p/golangide/downloads/list) + LiteIDE这个工具是由我们国内牛人VFC写的,使用起来相当地方便。它支持代码高亮、自动补全、项目管理等功能。[下载地址](http://code.google.com/p/golangide/downloads/list) + + 请根据自己的系统下载相应的版本,这些都是已经编译好的文件。Windows和Ubuntu系统可直接打开bin下面的liteide;Mac则需通过LaunchPad打开liteide。 - 根据自己的系统下载相应的版本,这些都是已经编译好的文件,window和ubuntu系统直接打开bin下面的liteide,mac通过launchpad打开liteide - ![](images/1.4.liteide.png?raw=true) - - 大家可以看到左边是文件项目列表,左下角有相应的文件类导航,顶部有相应的调试工具和编译工具,主要的这个工具支持自动化提示同时支持本文件中函数的提示,目前还没有做到整个项目中函数的提示。配置也是很方便的,只要你已经安装前面几个小节配置了相应的go和gopath,那么打开软件之后,就可以直接新建项目开始用了。 - - 如果你使用的是32位版本,那么按照以上步骤配置就可以了,而如果你使用的是64位版本,则需要修改 查看=》选项=》LiteEnv=>Win64.env=>GOROOT=c:\go-w64 为你的GO ROOT 不然无法使用build命令 - -##Sublime text + 大家可以看到左边是文件项目列表,左下角有相应的文件类导航,顶部有相应的调试工具和编译工具,主要的这个工具支持自动化提示同时支持本文件中函数的提示,目前还没有做到整个项目中函数的提示。配置也是很方便的,只要你已经按照前面几个小节配置了相应的go和`$GOPATH`,那么打开软件之后,就可以直接新建项目开始用了。 + + 如果你使用的是32位版本,那么按照以上步骤配置就可以了;而如果你使用的是64位版本,则需要修改 查看 => 选项 => LiteEnv => Win64.env => GOROOT=c:\go-w64 为你的`$GOROOT`,不然会无法使用`build`命令。 + + +##Sublime Text + + 这里将介绍Sublime Text 2(以下简称Sublime)+GoSublime+gocode+MarGo的组合,那么为什么选择这个组合呢? - 这里将介绍sublime text2+gosublime+gocode的组合,那么为什么选择这个组合呢? - - 自动化提示代码,如下图所示 ![](images/1.4.sublime1.png?raw=true) - - - 保存的时候自动格式化代码,让您编写的代码更加美观,符合golang的标准 + + - 保存的时候自动格式化代码,让您编写的代码更加美观,符合Go的标准。 - 支持项目管理 ![](images/1.4.sublime2.png?raw=true) - 支持语法高亮 - - sublime text2免费,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别 - - 接下来就开始讲如何安装,下载[sublimetext](http://www.sublimetext.com/) - - 根据自己相应的系统下载相应的版本,然后打开sublimetext,对于不熟悉sublimetext的同学可以先看一下这篇文章 [Sublime Text 2 入门及技巧](http://lucifr.com/139225/sublime-text-2-tricks-and-tips/) - - 1.打开之后安装 Package Control:ctrl+` 打开命令行,执行如下代码 + - Sublime Text 2可免费使用,只是保存次数达到一定数量之后就会提示是否购买,点击取消继续用,和正式注册版本没有任何区别。 + + 接下来就开始讲如何安装,下载[Sublime](http://www.sublimetext.com/) + + 根据自己相应的系统下载相应的版本,然后打开Sublime,对于不熟悉Sublime的同学可以先看一下这篇文章[Sublime Text 2 入门及技巧](http://lucifr.com/139225/sublime-text-2-tricks-and-tips/) + + 1.打开之后安装 Package Control:Ctrl+` 打开命令行,执行如下代码: import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation' - 这个时候你重启一下sublimetext,可以发现在在菜单栏多了一个如下的栏目,说明package control已经安装成功了 + 这个时候重启一下Sublime,可以发现在在菜单栏多了一个如下的栏目,说明Package Control已经安装成功了。 ![](images/1.4.sublime3.png?raw=true) - 2.接下来安装gocode https://github.com/nsf/gocode - 打开终端运行如下代码 - + 2.接下来安装gocode和MarGo + 打开终端运行如下代码(需要git) + go get -u github.com/nsf/gocode go get -u github.com/DisposaBoy/MarGo - - 这个时候我们会发现在gopath/bin下面多了两个可执行文件,gocode和margo,这两个文件会在gosublime起来的时候自动启动 - - 3.安装完之后就可以安装sublimetext的插件了,安装gosublime、sidebar(增强边栏),安装插件之后记得重启sublimetext生效,ctrl+shift+p打开package controll 输入pcip - + + 这个时候我们会发现在`$GOPATH/bin`下面多了两个可执行文件,gocode和MarGo,这两个文件会在GoSublime加载时自动启动。 + + 3.安装完之后就可以安装Sublime的插件了。需安装GoSublime、SidebarEnhancements和Go Build,安装插件之后记得重启Sublime生效,Ctrl+Shift+p打开Package Controll 输入`pcip`(即“Package Control: Install Package”的缩写)。 + 这个时候看左下角显示正在读取包数据,完成之后出现如下界面 - + ![](images/1.4.sublime4.png?raw=true) - 这个时候输入gosublime,按确定就开始安装了,同理应用于sidebar - - 4.验证是否安装成功,你可以打开sublimetext,打开main.go,看看语法是不是高亮了,输入import是不是自动化提示了,import "fmt"之后,输入fmt.是不是自动化提示有函数了 - - 如果已经出现这个提示,那说明你已经安装完成了,并且完成了自动提示 - - 如果没有出现这样的提示,一般就是你的path没有配置正确,你可以打开终端,输入gocode,是不是能够正确运行,如果不行就说明path没有配置正确 + 这个时候输入GoSublime,按确定就开始安装了。同理应用于SidebarEnhancements和Go Build。 + + 4.验证是否安装成功,你可以打开Sublime,打开main.go,看看语法是不是高亮了,输入`import`是不是自动化提示了,`import "fmt"`之后,输入`fmt.`是不是自动化提示有函数了。 + + 如果已经出现这个提示,那说明你已经安装完成了,并且完成了自动提示。 + + 如果没有出现这样的提示,一般就是你的`$PATH`没有配置正确。你可以打开终端,输入gocode,是不是能够正确运行,如果不行就说明`$PATH`没有配置正确。 ## Vim -Vim是从vi发展出来的一个文本编辑器, 代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 +Vim是从vi发展出来的一个文本编辑器, 代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。 ![](images/1.4.vim.png?raw=true) 1. 配置vim高亮显示 - + cp -r $GOROOT/misc/vim/* ~/.vim/ - + 2. 在~/.vimrc文件中增加语法高亮显示 - + filetype plugin indent on syntax on @@ -81,7 +81,7 @@ Vim是从vi发展出来的一个文本编辑器, 代码补完、编译及错误 go get -u github.com/nsf/gocode - gocode默认安装到$GOPATH/bin里面下面,需要把$GOPATH/bin路径设置到系统PATH里面。 + gocode默认安装到`$GOPATH/bin`下面,需要把`$GOPATH/bin`路径设置到系统`$PATH`里面。 4. 配置[Gocode](https://github.com/nsf/gocode/) @@ -95,11 +95,11 @@ Vim是从vi发展出来的一个文本编辑器, 代码补完、编译及错误 propose-builtins true lib-path "/home/border/gocode/pkg/linux_amd64" - 5. 恭喜你,安装完成,你现在可以使用 **C-x C-o** 体验一下开发Go的乐趣. - + 5. 恭喜你,安装完成,你现在可以使用`:e main.go`体验一下开发Go的乐趣。 + ## Emacs -Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中 +Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环境,或可称它为集成开发环境,这些功能如让使用者置身于全功能的操作系统中。 ![](images/1.4.emacs.png?raw=true) @@ -111,7 +111,7 @@ Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环 go get -u github.com/nsf/gocode - gocode默认安装到$GOPATH/bin里面下面,需要把$GOPATH/bin路径设置到系统PATH里面。 + gocode默认安装到`$GOPATH/bin`里面下面,需要把`$GOPATH/bin`路径设置到系统`$PATH`里面。 3. 配置[Gocode](https://github.com/nsf/gocode/) @@ -143,7 +143,7 @@ Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环 (local-set-key ">" 'semantic-complete-self-insert) 详细信息参考: http://www.emacswiki.org/emacs/AutoComplete - + 5. 配置.emacs ;; golang mode @@ -155,7 +155,7 @@ Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环 (add-hook 'go-mode-hook '(lambda () - ;; gocode + ;; gocode (auto-complete-mode 1) (setq ac-sources '(ac-source-go)) ;; Imenu & Speedbar @@ -231,12 +231,12 @@ Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环 (show-all) (shell-command-on-region (point-min) (point-max) "go tool fix -diff")) - 6. 恭喜你,你现在可以体验在神器中开发Go的乐趣. 默认speedbar是关闭的,如果打开需要把 ;; (speedbar 1) 前面的注释去掉,或者也可以通过 *M-x speedbar* 手动开启。 + 6. 恭喜你,你现在可以体验在神器中开发Go的乐趣。默认speedbar是关闭的,如果打开需要把 ;; (speedbar 1) 前面的注释去掉,或者也可以通过 *M-x speedbar* 手动开启。 ## links * [目录]() * 上一节: [Go 命令](<1.3.md>) * 下一节: [总结](<1.5.md>) -## LastModified +## LastModified * $Id$ diff --git a/1.5.md b/1.5.md index 6d403461..5968dedc 100644 --- a/1.5.md +++ b/1.5.md @@ -1,11 +1,11 @@ -#总结 - -这一章中我们主要介绍了如何安装go,以及如何配置本地的gopath,通过设置gopath之后如何创建项目,项目创建之后如何编译、如何安装,接着介绍了一些go的常用命令工具,最后介绍了go的开发工具,希望能够通过有利的工具快速的开发go应用 - +#总结 + +这一章中我们主要介绍了如何安装Go,以及如何配置本地的`$GOPATH`,通过设置`$GOPATH`之后如何创建项目,项目创建之后如何编译、如何安装,接着介绍了一些Go的常用命令工具,最后介绍了Go的开发工具,希望能够通过有利的工具快速的开发Go应用。 + ## links * [目录]() * 上一节: [Go开发工具](<1.4.md>) * 下一章: [go语言基础](<2.md>) -## LastModified - * $Id$ \ No newline at end of file +## LastModified + * $Id$ From 2301e043fd6aa368c8aa0cf84dfadb4f0601ec1a Mon Sep 17 00:00:00 2001 From: Oling Cat Date: Wed, 19 Sep 2012 22:52:18 +0800 Subject: [PATCH 3/4] Added the License. --- 1.4.md | 12 ++++++------ README.md | 35 +++++++++++++++++++---------------- 2 files changed, 25 insertions(+), 22 deletions(-) diff --git a/1.4.md b/1.4.md index 6d77f963..e3fd08a6 100644 --- a/1.4.md +++ b/1.4.md @@ -32,23 +32,23 @@ 根据自己相应的系统下载相应的版本,然后打开Sublime,对于不熟悉Sublime的同学可以先看一下这篇文章[Sublime Text 2 入门及技巧](http://lucifr.com/139225/sublime-text-2-tricks-and-tips/) - 1.打开之后安装 Package Control:Ctrl+` 打开命令行,执行如下代码: + 1. 打开之后安装 Package Control:Ctrl+` 打开命令行,执行如下代码: import urllib2,os; pf='Package Control.sublime-package'; ipp=sublime.installed_packages_path(); os.makedirs(ipp) if not os.path.exists(ipp) else None; urllib2.install_opener(urllib2.build_opener(urllib2.ProxyHandler())); open(os.path.join(ipp,pf),'wb').write(urllib2.urlopen('http://sublime.wbond.net/'+pf.replace(' ','%20')).read()); print 'Please restart Sublime Text to finish installation' - 这个时候重启一下Sublime,可以发现在在菜单栏多了一个如下的栏目,说明Package Control已经安装成功了。 + 这个时候重启一下Sublime,可以发现在在菜单栏多了一个如下的栏目,说明Package Control已经安装成功了。 ![](images/1.4.sublime3.png?raw=true) - 2.接下来安装gocode和MarGo - 打开终端运行如下代码(需要git) + 2. 接下来安装gocode和MarGo。 + 打开终端运行如下代码(需要git) go get -u github.com/nsf/gocode go get -u github.com/DisposaBoy/MarGo 这个时候我们会发现在`$GOPATH/bin`下面多了两个可执行文件,gocode和MarGo,这两个文件会在GoSublime加载时自动启动。 - 3.安装完之后就可以安装Sublime的插件了。需安装GoSublime、SidebarEnhancements和Go Build,安装插件之后记得重启Sublime生效,Ctrl+Shift+p打开Package Controll 输入`pcip`(即“Package Control: Install Package”的缩写)。 + 3. 安装完之后就可以安装Sublime的插件了。需安装GoSublime、SidebarEnhancements和Go Build,安装插件之后记得重启Sublime生效,Ctrl+Shift+p打开Package Controll 输入`pcip`(即“Package Control: Install Package”的缩写)。 这个时候看左下角显示正在读取包数据,完成之后出现如下界面 @@ -56,7 +56,7 @@ 这个时候输入GoSublime,按确定就开始安装了。同理应用于SidebarEnhancements和Go Build。 - 4.验证是否安装成功,你可以打开Sublime,打开main.go,看看语法是不是高亮了,输入`import`是不是自动化提示了,`import "fmt"`之后,输入`fmt.`是不是自动化提示有函数了。 + 4. 验证是否安装成功,你可以打开Sublime,打开main.go,看看语法是不是高亮了,输入`import`是不是自动化提示了,`import "fmt"`之后,输入`fmt.`是不是自动化提示有函数了。 如果已经出现这个提示,那说明你已经安装完成了,并且完成了自动提示。 diff --git a/README.md b/README.md index 0d55f5bf..9ed5a2e2 100644 --- a/README.md +++ b/README.md @@ -1,31 +1,34 @@ -#《Go Web 编程》 -因为自己对web开发比较感兴趣,所以最近抽空在写一本开源的书籍《Go Web编程》《build web application with golang》。写这本书不表示我能力很强,而是我愿意分享,和大家一起分享Go写web应用的一些东西。 - -- 对于从php/python/ruby转过来的同学了解go怎么写web应用开发的 - -- 对于从c/c++转过来的同学了解web到底是怎么运行起来的 - -我一直认为知识是用来分享的,让更多的人分享自己拥有的一切知识这个才是人生最大的快乐。 - -这本书目前我放在github上,我现在基本每天晚上抽空会写一些,时间有限、能力有限,所以希望更多的朋友参与到这个开源项目中来。 - +#《Go Web 编程》 +因为自己对Web开发比较感兴趣,所以最近抽空在写一本开源的书籍《Go Web编程》《Build Web Application with Golang》。写这本书不表示我能力很强,而是我愿意分享,和大家一起分享Go写Web应用的一些东西。 + +- 对于从php/python/ruby转过来的同学了解go怎么写web应用开发的 + +- 对于从c/c++转过来的同学了解web到底是怎么运行起来的 + +我一直认为知识是用来分享的,让更多的人分享自己拥有的一切知识这个才是人生最大的快乐。 + +这本书目前我放在github上,我现在基本每天晚上抽空会写一些,时间有限、能力有限,所以希望更多的朋友参与到这个开源项目中来。 + ## 撰写方法 ### 文件命名 每个章节建立一个md文件,如第11章的第3节,则建立**11.3.md**。 ## 格式规范 -请参看已有章节的规范, 要注意的是, 每个章节在底部都需要有一个links节, 包含"目录", "上一节", "下一节"的链接 +请参看已有章节的规范,要注意的是,每个章节在底部都需要有一个links节,包含“目录”,“上一节”和“下一节”的链接。 ##如何编译 -目前可以把相应的Markdown编译成html文件,执行`go build build.go`,执行生成的文件,就会在底目录下生成相应的html文件 +目前可以把相应的Markdown编译成html文件,执行`go build build.go`,执行生成的文件,就会在底目录下生成相应的html文件。 ##致谢 首先要感谢golang的QQ群102319854,里面的每一个人都很热心,同时要特别感谢几个人 - [四月份平民](https://plus.google.com/110445767383269817959) (review代码) - - [Hong Ruiqi](https://github.com/hongruiqi) (review代码) + - [Hong Ruiqi](https://github.com/hongruiqi) (review代码) - [BianJiang](https://github.com/border) (编写go开发工具Vim和Emacs的设置) - - [OlingCat](https://github.com/OlingCat)(review代码) + - [Oling Cat](https://github.com/OlingCat) (review代码) + +##授权许可 +除特别声明外,本书中的内容使用[CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)(创作共用 署名-相同方式共享3.0许可协议)授权,代码遵循[BSD 3-Clause License]()(3项条款的BSD许可协议)。 ##开始阅读 -[开始阅读](https://github.com/astaxie/build-web-application-with-golang/blob/master/preface.md) \ No newline at end of file +[开始阅读](https://github.com/astaxie/build-web-application-with-golang/blob/master/preface.md) From 6798b8040dedcd58fb7474f37203bee19e69b4ab Mon Sep 17 00:00:00 2001 From: Oling Cat Date: Wed, 19 Sep 2012 22:57:26 +0800 Subject: [PATCH 4/4] Added the LICENSE.md file. --- LICENSE.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) create mode 100644 LICENSE.md diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..18ba1336 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,12 @@ +Copyright (c) 2012, AstaXie and The Contributors +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + + * Neither the name of the AstaXie nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.