返回介绍

3.4 使用 Go 的工具

发布于 2024-10-11 12:38:59 字数 2280 浏览 0 评论 0 收藏 0

在前几章里,我们已经使用过了 go 这个工具,但我们还没有探讨这个工具都能做哪些事情。让我们进一步深入了解这个短小的命令,看看都有哪些强大的能力。在命令行提示符下,不带参数直接键入 go 这个命令:

$ go

go 这个工具提供了很多功能,如图 3-1 所示。

0302.tif

图 3-1  go 命令输出的帮助文本

通过输出的列表可以看到,这个命令包含一个编译器,这个编译器可以通过 build 命令启动。正如预料的那样, buildclean 命令会执行编译和清理的工作。现在使用代码清单 3-2 里的源代码,尝试执行这些命令:

go build hello.go

当用户将代码签入源码库里的时候,开发人员可能并不想签入编译生成的文件。可以用 clean 命令解决这个问题:

go clean hello.go

调用 clean 后会删除编译生成的可执行文件。让我们看看 go 工具的其他一些特性,以及使用这些命令时可以节省时间的方法。接下来的例子中,我们会使用代码清单 3-7 中的样例代码。

代码清单 3-7 使用 io 包的工作

01 package main
02
03 import (
04   "fmt"
05   "io/ioutil"
06   "os"
07
08   "github.com/goinaction/code/chapter3/words"
09 )
10
11 // main 是应用程序的入口
12 func main() {
13   filename := os.Args[1]
14
15   contents, err := ioutil.ReadFile(filename)
16   if err != nil {
17     fmt.Println(err)
18     return
19   }
20
21   text := string(contents)
22
23   count := words.CountWords(text)
24   fmt.Printf("There are %d words in your text.\n", count)
25 }

如果已经下载了本书的源代码,应该可以在$GOPATH/src/github.com/goinaction/code/chapter3/words 找到这个包。确保已经有了这段代码再进行后面的内容。

大部分 Go 工具的命令都会接受一个包名作为参数。回顾一下已经用过的命令,会想起 build 命令可以简写。在不包含文件名时, go 工具会默认使用 当前目录 来编译。

go build

因为构建包是很常用的动作,所以也可以直接指定包:

go build github.com/goinaction/code/chapter3/wordcount

也可以在指定包的时候使用通配符。3 个点表示匹配所有的字符串。例如,下面的命令会编译 chapter3 目录下的所有包:

go build github.com/goinaction/code/chapter3/...

除了指定包,大部分 Go 命令使用短路径作为参数。例如,下面两条命令的效果相同:

go build wordcount.go

go build .

要执行程序,需要首先编译,然后执行编译创建的 wordcount 或者 wordcount.exe 程序。不过这里有一个命令可以在一次调用中完成这两个操作:

go run wordcount.go

go run 命令会先构建 wordcount.go 里包含的程序,然后执行构建后的程序。这样可以节省好多录入工作量。

做开发会经常使用 go buildgo run 命令。让我们看另外几个可用的命令,以及这些命令可以做什么。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文