From 5fcfdd039f9c2d18cbaa0529469ec62b78e16f66 Mon Sep 17 00:00:00 2001 From: astaxie Date: Fri, 7 Sep 2012 10:18:12 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86minux=E7=9A=84?= =?UTF-8?q?=E4=B8=80=E4=BA=9B=E5=BB=BA=E8=AE=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1.1.md | 73 ++++++++++++++++++++++++++++++++++++------------------ 1.2.md | 8 +++--- 1.3.md | 19 +++++++++----- 1.4.md | 4 +-- 1.md | 12 ++++----- preface.md | 14 +++++------ 6 files changed, 81 insertions(+), 49 deletions(-) diff --git a/1.1.md b/1.1.md index 7622b8ec..9ac3ae83 100644 --- a/1.1.md +++ b/1.1.md @@ -1,4 +1,21 @@ -# 1.1 GO 安装 +# 1.1 Go 安装 + +##如何判断机器是32还是64位系统 +我们接下来的Go安装需要判断操作系统的位数,所以这小节我们先确定我们自己的系统类型。 + +针对window系统,右击我的电脑,点击属性,显示的信息里面我们可以判断出来,XP系统如果是64位的,那么会显示X64,如果没有X64,那么默认都是32位。window7系统也是查看我的电脑的属性,在系统类型里面会显示使用的系统类型,64位操作系统或者32位操作系统。 + +Mac系统的用户建议直接使用64位的,因为Go支持的Mac OS X已经不支持在纯32位处理器上跑了。 + +Linux系统通过命令`uname -a`可以查看系统的信息: + +64位机器显示 + + 前面有一段描述 x86_64 x86_64 x86_64 GNU/Linux + +32位机器显示 + + 前面有一段描述 i686 i686 i386 GNU/Linux ## Window 安装 @@ -20,35 +37,43 @@ 出现go编译的信息,那么说明go已经安装成功了,如果出现该命令不存在,那么可以检查一下自己的环境变量里面的PATH是不是包含了go安装目录 -## linux安装 - 访问[下载地址][downlink],32位机器下载go1.0.2.linux-386.tar.gz,64位机器下载go1.0.2.linux-amd64.tar.gz, - - 解压缩`tar zxvf go1.0.2.linux-amd64.tar.gz` - - 解压文件到go,移动go文件到home目录下`mv go ~/` - - 设置PATH,`export PATH=$PATH:$HOME/go/bin` +## linux安装 + 访问[下载地址][downlink],32位机器下载go1.0.2.linux-386.tar.gz,64位机器下载go1.0.2.linux-amd64.tar.gz, + + 解压缩`tar zxvf go1.0.2.linux-amd64.tar.gz` + + 解压文件到go,移动go文件到home目录下`mv go ~/` + + 设置PATH,`export PATH=$PATH:$HOME/go/bin` + + 然后执行`go` - 然后执行`go` - 看到如下图片说明已经安装成功 ![](images/1.1.linux.png?raw=true) - 出现go编译的信息,那么说明go已经安装成功了,如果出现该命令不存在,那么可以检查一下自己的环境变量里面的PATH是不是包含了go安装目录 + 出现go编译的信息,那么说明go已经安装成功了,如果出现该命令不存在,那么可以检查一下自己的环境变量里面的PATH是不是包含了go安装目录 -## 源码安装 - 首先你必须安装了hg工具,然后执行如下的代码 - - 假设当前在当前用户的home目录下 - - hg clone -u release https://code.google.com/p/go - cd go/src - ./all.bash - - 然后设置PATH,`export PATH=$PATH:$HOME/go/bin` - +## 源码安装 +Go的源代码有部分是用C写的,所以你要源码安装,必须第一步安装C的编译工具 + +Mac系统只要你安装了Xcode,就已经包含了相应的编译工具。在Unix系统中需要安装gcc等工具,例如Ubuntu系统通过这种方式安装编译工具:`sudo apt-get install gcc libc6-dev`。在Window系统中你需要安装MinGW,通过MinGW安装gcc。 + +首先你必须安装了hg工具,然后执行如下的代码 + + 假设当前在当前用户的home目录下 + + hg clone -u release https://code.google.com/p/go + cd go/src + ./all.bash + +运行all.bash后出现"ALL TESTS PASSED"的字样的时候才算安装成功; + +上面写的是Unix风格的,Windows下安装方式类似,只不过是运行all.bat,调用的编译器是MinGW的 gcc。 + + 然后设置PATH,`export PATH=$PATH:$HOME/go/bin` + 看到如下图片说明已经安装成功 ![](images/1.1.mac.png?raw=true) @@ -57,7 +82,7 @@ ## links * [目录]() - * 上一节: [GO环境配置](<1.md>) + * 上一节: [Go环境配置](<1.md>) * 下一节: [GOPATH 与工作空间](<1.2.md>) ## LastModified diff --git a/1.2.md b/1.2.md index 30ad99be..ee0332aa 100644 --- a/1.2.md +++ b/1.2.md @@ -5,7 +5,7 @@ 在类似 Unix 环境大概这样设置: - GOPATH=/home/apple/mygo + export GOPATH=/home/apple/mygo Windows 设置如下,新建一个环境变量名称叫做GOPATH: @@ -56,7 +56,7 @@ GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个go 安装完之后,我们可以进入如下目录 - cd $GOPATH/pkg/平台名/mymath.a + cd $GOPATH/pkg/$GOOS_$GOARCH/mymath.a 这个.a文件是应用包,相当于一个函数库一样,那么我们如何进行调用呢? @@ -68,7 +68,7 @@ GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个go mkdir mathapp vim main.go -// $GOPATH/src/mathapp/main.go 源码: +// `$GOPATH/src/mathapp/main.go`源码: package main @@ -150,7 +150,7 @@ go get本质上可以理解为首先第一步是通过源码工具clone代码到 ## links * [目录]() * 上一节: [GO安装](<1.1.md>) - * 下一节: [GO shell命令](<1.3.md>) + * 下一节: [GO 命令](<1.3.md>) ## LastModified * $Id$ \ No newline at end of file diff --git a/1.3.md b/1.3.md index dc4b3e6e..fe573d94 100644 --- a/1.3.md +++ b/1.3.md @@ -1,4 +1,4 @@ -# 1.3 GO Shell 命令 +# 1.3 GO 命令 ##GO 命令 @@ -21,9 +21,16 @@ (注:实际上,package名在[go语言规范](https://golang.org/ref/spec)中指代码中“package”后使用的名称,此名称可以与文件夹名不同。默认生成的可执行文件名是文件夹名。) - go build会忽略目录下以”_“开头的go文件 + go build会忽略目录下以”_“开头的go文件,还会忽略点开头的的go文件。 - go build会选择性的编译系统名结尾的文件(linux、darwin、windows、freebsd),如果你编写的代码用了类似的名字结尾,那么很可能在别的系统下无法编译通过。 + 如果你的源代码里面针对不同系统需要不同的逻辑处理,那么你可以根据不同的系统来命名文件,例如有一个读取数组的文件在不同的系统可能有如下几个文件 + + array_linux.go + array_darwin.go + array_windows.go + array_freebsd.go + +go build的时候会选择性的编译系统名结尾的文件(linux、darwin、windows、freebsd),例如linux系统下面编译只会选择array_linux.go文件,其他系统命名后缀文件全部忽略。 ##go clean @@ -50,12 +57,12 @@ 这个命令是用来动态获取远程代码包的,目前支持的有BitBucket、GitHub、Google Code 、Launchpad ,这个命令在内部实际上分成了两步操作,第一步是下载源码包,第二步是`go install`,下载源码包go工具会自动根据不同的域名调用不同的源码工具,对应关系如下: - BitBucket (Mercurial) + BitBucket (Mercurial Git) GitHub (Git) Google Code Project Hosting (Git, Mercurial, Subversion) Launchpad (Bazaar) - 所以为了`go get` 能正常工作,你必须确保安装了合适的 源码管理工具同时把这些命令加入你的path + 所以为了`go get` 能正常工作,你必须确保安装了合适的 源码管理工具同时把这些命令加入你的path。其实`go get`支持自定义域名的功能,具体参见`go help remote` ##go install @@ -92,7 +99,7 @@ go version 查看go当前的版本 go env 查看当前go的环境变量 go list 列出当前全部安装的package - go run 编译当前包并执行可执行文件 + go run 编译并运行Go程序 ## links * [目录]() diff --git a/1.4.md b/1.4.md index 08533ad1..425874c4 100644 --- a/1.4.md +++ b/1.4.md @@ -86,7 +86,7 @@ Vim是从vi发展出来的一个文本编辑器, 代码补完、编译及错误 4. 配置[Gocode](https://github.com/nsf/gocode/) ~ cd $GOPATH/src/github.com/nsf/gocode/vim - ~ /update.bash + ~ ./update.bash ~ gocode set propose-builtins true propose-builtins true ~ gocode set lib-path "/home/border/gocode/pkg/linux_amd64" @@ -235,7 +235,7 @@ Emacs传说中的神器,她不仅仅是一个编辑器,它是一个整合环 ## links * [目录]() - * 上一节: [Go Shell命令](<1.3.md>) + * 上一节: [Go 命令](<1.3.md>) * 下一节: [总结](<1.5.md>) ## LastModified diff --git a/1.md b/1.md index d3247cda..ab5c0645 100644 --- a/1.md +++ b/1.md @@ -1,15 +1,15 @@ # 1 GO环境配置 ## 目录 - * 1. [GO安装](1.1.md) + * 1. [Go安装](1.1.md) * 2. [GOPATH 与工作空间](1.2.md) - * 3. [GO shell命令](1.3.md) + * 3. [Go 命令](1.3.md) * 4. [GO开发工具](1.4.md) * 5. [小结](1.5.md) -欢迎来到GO的世界,让我们开始吧。 +欢迎来到Go的世界,让我们开始吧。 -为什么选择GO? +为什么选择Go? - 拥有Python、php等开发快速的特性 - 拥有c语言的运行性能 @@ -17,11 +17,11 @@ - 跨平台,交叉编译 总之是一种C+Python动静结合的好语言 -在本章中,讲述GO的安装、以及如何配置项目信息。 +在本章中,讲述Go的安装、以及如何配置项目信息。 ## links * [目录]() - * 下一节: [GO安装](<1.1.md>) + * 下一节: [Go安装](<1.1.md>) ## LastModified * $Id$ \ No newline at end of file diff --git a/preface.md b/preface.md index 4e9df10c..47a0dea2 100644 --- a/preface.md +++ b/preface.md @@ -1,15 +1,15 @@ -* 1.[GO环境配置](1.md) - - 1.1. [GO安装](1.1.md) +* 1.[Go环境配置](1.md) + - 1.1. [Go安装](1.1.md) - 1.2. [GOPATH 与工作空间](1.2.md) - - 1.3. [GO shell命令](1.3.md) - - 1.4. [GO开发工具](1.4.md) + - 1.3. [Go 命令](1.3.md) + - 1.4. [Go开发工具](1.4.md) - 1.5. [小结](1.5.md) * 2.[GO语言基础](2.md) - 2.1. [你好,GO](2.1.md) - 2.2. [GO基础](2.2.md) - - 2.3. [流程和函数](2.3.md) + - 2.3. [流程和函数](2.3.md) - 2.4. [struct](2.4.md) - - 2.5. [面向对象](2.5.md) + - 2.5. [面向对象](2.5.md) - 2.6. [interface](2.6.md) - 2.7. [并发](2.7.md) - 2.8. [小结](2.8.md) @@ -24,7 +24,7 @@ - 4.2 [验证表单的输入](4.2.md) - 4.3 [预防跨站脚本](4.3.md) - 4.4 [防止多次递交表单](4.4.md) - - 4.5 [处理文件上传](4.5.md) + - 4.5 [处理文件上传](4.5.md) - 4.6 [小结](4.6.md) * 5.访问数据库 - 5.1 database/sql接口