已经解决

This commit is contained in:
xiemengjun
2012-09-19 23:43:20 +08:00
7 changed files with 147 additions and 127 deletions

14
1.1.md
View File

@@ -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
* [目录](<preface.md>)
* 上一节: [Go环境配置](<1.md>)
* 下一节: [GOPATH 与工作空间](<1.2.md>)
* [目录](<preface.md>)
* 上一节: [Go环境配置](<1.md>)
* 下一节: [GOPATH 与工作空间](<1.2.md>)
## LastModified
* $Id$
* $Id$
[downlink]: http://code.google.com/p/go/downloads/list "Go安装包下载"

91
1.3.md
View File

@@ -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 CodeLaunchpad 这个命令在内部实际上分成了两步操作第一步是下载源码包,第二步是`go install`下载源码包go工具会自动根据不同的域名调用不同的源码工具对应关系如下
这个命令是用来动态获取远程代码包的目前支持的有BitBucket、GitHub、Google CodeLaunchpad这个命令在内部实际上分成了两步操作第一步是下载源码包,第二步是执行`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
* [目录](<preface.md>)
* 上一节: [GOPATH与工作空间](<1.2.md>)
* 下一节: [GO开发工具](<1.4.md>)
* 下一节: [Go开发工具](<1.4.md>)
## LastModified
## LastModified
* $Id$

106
1.4.md
View File

@@ -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下面的liteideMac则需通过LaunchPad打开liteide。
根据自己的系统下载相应的版本这些都是已经编译好的文件window和ubuntu系统直接打开bin下面的liteidemac通过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 ControlCtrl+` 打开命令行,执行如下代码
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
* [目录](<preface.md>)
* 上一节: [Go 命令](<1.3.md>)
* 下一节: [总结](<1.5.md>)
## LastModified
## LastModified
* $Id$

12
1.5.md
View File

@@ -1,11 +1,11 @@
#总结
这一章中我们主要介绍了如何安装go以及如何配置本地的gopath通过设置gopath之后如何创建项目,项目创建之后如何编译、如何安装,接着介绍了一些go的常用命令工具最后介绍了go的开发工具希望能够通过有利的工具快速的开发go应用
#总结
这一章中我们主要介绍了如何安装Go以及如何配置本地的`$GOPATH`,通过设置`$GOPATH`之后如何创建项目,项目创建之后如何编译、如何安装,接着介绍了一些Go的常用命令工具最后介绍了Go的开发工具希望能够通过有利的工具快速的开发Go应用
## links
* [目录](<preface.md>)
* 上一节: [Go开发工具](<1.4.md>)
* 下一章: [go语言基础](<2.md>)
## LastModified
* $Id$
## LastModified
* $Id$

1
1.md
View File

@@ -17,6 +17,7 @@
- 具有垃圾回收机制
- 跨平台,可交叉编译
- 还有更多……
总之是一种C+Python动静结合的好语言。
在本章中我们将讲述Go的安装方法以及如何配置项目信息。

12
LICENSE.md Normal file
View File

@@ -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.

View File

@@ -1,36 +1,42 @@
#《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节包含目录”,“上一节”和“下一节的链接
##如何编译
`build.go`依赖markdown的一个解析包所以第一步先
go get github.com/russross/blackfriday
这样读者就可以把相应的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代码)
- [BianJiang](https://github.com/border) (编写go开发工具Vim和Emacs的设置)
- [Hong Ruiqi](https://github.com/hongruiqi) (review代码)
- [BianJiang](https://github.com/border) (编写go开发工具Vim和Emacs的设置)
- [Oling Cat](https://github.com/OlingCat)(review代码)
- [Wenlei Wu](mailto:spadesacn@gmail.com)(提供一些图片展示)
##授权许可
除特别声明外,本书中的内容使用[CC BY-SA 3.0 License](http://creativecommons.org/licenses/by-sa/3.0/)(创作共用 署名-相同方式共享3.0许可协议)授权,代码遵循[BSD 3-Clause License](<LICENSE.md>)3项条款的BSD许可协议
##开始阅读
[开始阅读](https://github.com/astaxie/build-web-application-with-golang/blob/master/preface.md)
[开始阅读](https://github.com/astaxie/build-web-application-with-golang/blob/master/preface.md)