Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions 1.3.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@

如果某个项目文件夹下有多个文件,又只想指定编译某个文件,这个命令可以指定编译文件,例如`go build a.go`,`go build`命令默认编译目录下全部的go文件

你也可以指定编译输出文件的名称,例如第一章的那个mathapp应用,我可以指定`go build -o astaxie.exe`,默认情况是你的package名,就是你的文件夹名称

你也可以指定编译输出文件的名称,例如第一章的那个mathapp应用,我可以指定`go build -o astaxie.exe`,默认情况是你的package名,就是你的文件夹名称

(注:实际上,package名在[go语言规范](https://golang.org/ref/spec)中指代码中“package”后使用的名称,此名称可以与文件夹名不同。默认生成的可执行文件名是文件夹名。)

go build会忽略目录下以”_“开头的go文件

##go clean
Expand Down Expand Up @@ -59,7 +61,7 @@

##go test

执行这个命令,会自动执行源码目录下面命名为`*_test.go`的文件,输出的信息类似
执行这个命令,会自动读取源码目录下面命名为`*_test.go`的文件,生成并运行测试用的可执行文件。输出的信息类似

ok archive/tar 0.011s
FAIL archive/zip 0.022s
Expand All @@ -74,10 +76,10 @@

如何查看相应package的文档呢?
例如builtin包,那么执行`go doc builtin`
如果是http包,那么执行`go doc net/http`
查看某一个包里面的函数,那么执行`godoc fmt Printf`
也可以查看相应的代码,执行`godoc -src fmt Printf`

如果是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中所有项目的相关文档,这对于经常被墙奸的用户来说,是一个不错的选择

##其他命令
Expand All @@ -96,4 +98,4 @@
* 下一节: [GO开发工具](<1.4.md>)

## LastModified
* $Id$
* $Id$
22 changes: 12 additions & 10 deletions 2.1.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,19 @@

`package <plaplapla>`(在我们的例子里面,plaplapla是main)这一句话是告诉我们当前这个文件属于那个包,而main包是告诉我们当前这个包是一个独立可运行的包,编译之后是可执行文件,除了main之外,其他的包最后生成的都是放在"$GOPATH/pkg/系统_架构“(以mac为例:darwin_amd64)下面的.a文件(也就是包文件)。

>每一个GO的独立可运行的应用程序,必定包含有一个`package main`,这个main包里面必定包含有一个入口函数main函数,这个函数没有任何的参数,也没有的返回值
>每一个GO的独立可运行的应用程序,必定包含有一个`package main`这个main包里面必定包含有一个入口函数main函数,这个函数没有任何的参数,也没有的返回值

为了打印"Hello,world...",我们调用了一个函数Printf,这个函数来自于fmt这个包,所以我们在第三行里面导入了系统级别的fmt包,`import "fmt"`

包的概念和python的modules是同一个理念,都是有一些特有的好处:模块化(能够把你的程序分成多个模块)和重用性(每个模块都能被其他应用程序反复使用),这里我们只要先了解一下包的概念,后面我们将会开始编写自己的包

第五行,我们定义了一个main函数,我们通过func这个关键字,他的内容通过{和}组织,就和我们平常写的c、c++、Java一样
第五行,我们定义了一个main函数,我们通过func这个关键字,他的内容通过`{`和`}`组织,就和我们平常写的c、c++、Java一样

大家可以看到main函数是没有任何的参数的,但是我们接下来学习如何编写函数里面,函数是可以带参数的,而且可以不返回数据,返回一个或者多个数据

第六行,我们调用了fmt包里面定义的函数Printf,大家可以看到,这个函数的调用是通过`package.function`的方式调用的,这个和python是十分相似的
第六行,我们调用了fmt包里面定义的函数Printf,大家可以看到,这个函数的调用是通过`<package name>.function`的方式调用的,这个和python是十分相似的

(注:前面提到过,包名和包所在文件夹名可以是不同的,此处的package name即为通过`package <plaplapla>`声明的包名,而非文件夹名。)

最后大家可以看到我们输出的内容里面包含了很多非ASCII码的字符,实际上,GO是天生支持UTF-8的,任何的语言都可以直接输出

Expand All @@ -44,10 +46,10 @@

GO使用package(和Python的模块类似)来组织代码。main.main函数(这个函数主要位于主包)是每一个独立的可运行程序的入口点。GO使用UTF-8字符串和标识符(因为UTF-8的发明者也就是GO的发明者),所以它天生就具有多语言的支持。

## links
* [目录](<preface.md>)
* 上一章: [GO语言基础](<2.md>)
* 下一节: [GO基础](<2.2.md>)
## LastModified
* $Id$
## links
* [目录](<preface.md>)
* 上一章: [GO语言基础](<2.md>)
* 下一节: [GO基础](<2.2.md>)

## LastModified
* $Id$