随笔分类 - 08.Go基础
摘要:【Go命令教程】1. 标准命令详解 【Go命令教程】2. go build 【Go命令教程】3. go install 【Go命令教程】4. go get 【Go命令教程】5. go clean 【Go命令教程】6. go doc 与 godoc 【Go命令教程】7. go run 【Go命令教程】
阅读全文
摘要:命令 go env 用于打印 Go 语言的环境信息。其中的一些信息我们在之前已经多次提及,但是却没有进行详细的说明。在本小节,我们会对这些信息进行深入介绍。我们先来看一看 go env 命令情况下都会打印出哪些 Go 语言通用环境信息。 表0-25 go env 命令可打印出的 Go 语言通用环境信
阅读全文
摘要:cgo 也是一个 Go 语言自带的特殊工具。一般情况下,我们使用命令 go tool cgo 来运行它。这个工具可以使我们创建能够调用 C 语言代码的 Go 语言源码文件。这使得我们可以使用 Go 语言代码去封装一些 C 语言的代码库,并提供给 Go 语言代码或项目使用。 在执行 go tool c
阅读全文
摘要:我们可以使用 go tool pprof 命令来交互式的访问概要文件的内容。命令将会分析指定的概要文件,并会根据我们的要求为我们提供高可读性的输出信息。 在 Go 语言中,我们可以通过标准库的代码包 runtime 和 runtime/pprof 中的程序来生成三种包含实时性数据的概要文件,分别是
阅读全文
摘要:命令 go vet 是一个 用于检查 Go 语言源码中静态错误的简单工具。与大多数 Go 命令一样,go vet 命令可以接受 -n 标记和 -x 标记。-n 标记用于只打印流程中执行的命令而不真正执行它们。-n 标记也用于打印流程中执行的命令,但不会取消这些命令的执行。示例如下: go vet 命
阅读全文
摘要:命令 go fix 会把指定 代码包 的所有 Go 语言源码文件中的旧版本代码修正为新版本的代码。这里所说的版本即 Go 语言的版本。代码包的所有 Go 语言源码文件不包括其子代码包(如果有的话)中的文件。修正操作包括把对旧程序调用的代码更换为对新程序调用的代码、把旧的语法更换为新的语法,等等。 这
阅读全文
摘要:go list 命令的作用是列出指定的 代码包 的信息。与其他命令相同,我们需要以 代码包导入路径 的方式给定代码包。被给定的代码包可以有多个。这些代码包对应的目录中必须直接保存有 Go 语言源码文件,其子目录中的文件不算在内。否则,代码包将被看做是不完整的。现在我们来试用一下: 我们看到,在不加任
阅读全文
摘要:go test 命令用于对 Go 语言编写的程序进行测试。这种测试是以 代码包 为单位的。当然,这还需要测试源码文件的帮助。关于怎样编写并写好 Go 程序测试代码,我们会在本章的第二节加以详述。在这里,我们只讨论怎样使用命令启动测试。 go test 命令会自动测试每一个指定的 代码包。当然,前提是
阅读全文
摘要:Go 源码文件包括:命令源码文件、库源码文件 和 测试源码文件。其中,命令源码文件 总应该属于 main 代码包,且在其中有无参数声明、无结果声明的 main 函数。单个命令源码文件可以被单独编译,也可以被单独安装(可能需要设置环境变量 GOBIN)。当然,命令源码文件也可以被单独运行。我们想要运行
阅读全文
摘要:go doc 命令可以打印附于Go语言程序 实体 上的文档。我们可以通过把程序实体的标识符作为该命令的参数来达到查看其文档的目的。 插播:所谓 Go语言的 程序实体,是指变量、常量、函数、结构体以及接口。而程序实体的 标识符 即是代表它们的名称。标识符又分 非限定标识符 和 限定标识符。其中,限定标
阅读全文
摘要:执行 go clean 命令会删除掉执行其它命令时产生的一些文件和目录,包括: 在使用 go build 命令时在当前代码包下生成的与包名同名或者与Go源码文件同名的可执行文件。在Windows下,则是与包名同名或者Go源码文件同名且带有“.exe”后缀的文件。 在执行 go test 命令并加入
阅读全文
摘要:命令 go get 可以根据要求和实际情况从互联网上下载或更新指定的代码包及其依赖包,并对它们进行编译和安装。在上面这个示例中,我们从著名的代码托管站点 Github 上下载了一个项目(或称代码包),并安装到了环境变量 GOPATH 中包含的第一个工作区中。与此同时,我们也知道了这个代码包的导入路径
阅读全文
摘要:命令 go install 用于编译并安装指定的代码包及它们的依赖包。当指定的代码包的依赖包还没有被编译和安装时,该命令会先去处理依赖包。与 go build 命令一样,传给 go install 命令的代码包参数应该以导入路径的形式提供。并且,go build 命令的绝大多数标记也都可以用于 go
阅读全文
摘要:go build 命令用于编译我们 指定的 源码文件 或 代码包 以及它们的依赖包。 例如,如果我们在执行 go build 命令时不后跟任何代码包,那么命令将试图编译当前目录所对应的代码包。例如,我们想编译 goc2p 项目的代码包 logging。其中一个方法是进入 logging 目录并直接执
阅读全文
摘要:Go 语言的 1.5 版本在标准命令方面有了重大变更。这倒不是说它们的用法有多大的变化,而是说它们的底层支持已经大变样了。让我们先来对比一下 $GOROOT/pkg/tool/< 平台相关目录 > 中的内容。以下简称此目录为 Go 工具目录。 插播:平台相关目录即以_命名的目录,用于存放因特定平台的
阅读全文
摘要:6.session和数据存储 6.1 session和cookie 6.2 Go如何使用session 6.3 session存储 6.4 预防session劫持 6.5 小结
阅读全文
摘要:Golang 提供了两个标准库用来处理模板 text/template 和 html/template。我们使用 html/template 格式化 html 字符。 模板引擎 模板引擎很多,Python 的 jinja,nodejs 的 jade 等都很好。所谓模板引擎,则将模板和数据进行渲染的输
阅读全文
摘要:Golang 的 Cookie web 开发免不了要和 cookie 打交道。Go 的 http 库也提供了 cookie 的相关操作。 Name 字段为 cookie 的名字,Value 是其值,剩下的 Path 和 Domain 则是 cookie 的存储的范围。Expires 是 cookie
阅读全文
摘要:请求的结构 HTTP 的交互以请求和响应的应答模式。Go 的请求我们早就见过了,handler 函数的第二个参数 http.Requests。其结构为: 从 request 结构可以看到,http 请求的基本信息都囊括了。对于请求而言,主要关注一下请求的 URL,Method,Header,Body
阅读全文
摘要:Go 精简(合并)了流控制语句,虽然某些时候不够便捷,但够用。 if...else... 条件表达式值必须是布尔类型,可省略括号,且左花括号不能另起一行。 比较特别的是对初始化语句的支持,可定义块局部变量或执行初始化函数。 局部变量的有效范围包含整个 if/else 块。 尽可能减少代码块嵌套,让正
阅读全文

浙公网安备 33010602011771号