 2.1 gofmt 的文化演变Griesemer Google, Inc. 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 2/34 gofmt Go源代码格式化工具 定义了“标准“格式 golang.org代码库中所有提交的Go代码都必须通过gofmt格式化过 除了gofmt之外,相同功能可以通过go/format库获得 不需要设置! 4/21/2015 1:3999/gofmt-cn.slide#1 9/34 gofmt的基本结构 源代码的处理 基本的格式化 附加:注释的处理 完善:代码和注释的对齐 但是,没有牛X的通用布局算法 相反的:基于节点的精细优化 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 10/34 处理源代码 使用`go/scanner`, `go/parser`及其相关的库 基本的办法:基于位置信息合并词汇流和注释流. 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 16/34 魔鬼就在细节中 在源代码中估计当前的位置. 比较当前的位置和注释的位置去决定下一个是什么. 词汇也包含了空格词汇 - 注释必须被合理的分布! 维持一个未被打印的空格缓冲区,在下一个词汇之前输出,然后分布注释. 多种策略得以正确地处理空格0 码力 | 34 页 | 9.97 MB | 1 年前3 2.1 gofmt 的文化演变Griesemer Google, Inc. 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 2/34 gofmt Go源代码格式化工具 定义了“标准“格式 golang.org代码库中所有提交的Go代码都必须通过gofmt格式化过 除了gofmt之外,相同功能可以通过go/format库获得 不需要设置! 4/21/2015 1:3999/gofmt-cn.slide#1 9/34 gofmt的基本结构 源代码的处理 基本的格式化 附加:注释的处理 完善:代码和注释的对齐 但是,没有牛X的通用布局算法 相反的:基于节点的精细优化 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 10/34 处理源代码 使用`go/scanner`, `go/parser`及其相关的库 基本的办法:基于位置信息合并词汇流和注释流. 4/21/2015 gofmt 的文化演变 http://127.0.0.1:3999/gofmt-cn.slide#1 16/34 魔鬼就在细节中 在源代码中估计当前的位置. 比较当前的位置和注释的位置去决定下一个是什么. 词汇也包含了空格词汇 - 注释必须被合理的分布! 维持一个未被打印的空格缓冲区,在下一个词汇之前输出,然后分布注释. 多种策略得以正确地处理空格0 码力 | 34 页 | 9.97 MB | 1 年前3
 通过SSA的解释执行窥探Golang编译之一角联合发起人 目 录 Golang 编译流程简介 01 SSA 解释执行 02 基于 SSA 的应用 03 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 语法解析,生成抽象语法树(Abstract Syntax Tree,AST),涉及的包: Tree,AST),涉及的包: • go/token 词法单元定义 • go/scanner 词法扫描 • go/ast 抽象语法树定义 • go/parser 语法解析 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 1 + 2 * 3 *ast.BinaryExpr (+) *ast.BasicLit 1 : INT *ast *ast.BinaryExpr (*) *ast.BasicLit 2 : INT * ast.BasicLit 3 : INT Golang 编译流程简介 01-AST 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 package main import ( "go/ast" "go/parser" "go/token" ) const src0 码力 | 30 页 | 1.50 MB | 1 年前3 通过SSA的解释执行窥探Golang编译之一角联合发起人 目 录 Golang 编译流程简介 01 SSA 解释执行 02 基于 SSA 的应用 03 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 语法解析,生成抽象语法树(Abstract Syntax Tree,AST),涉及的包: Tree,AST),涉及的包: • go/token 词法单元定义 • go/scanner 词法扫描 • go/ast 抽象语法树定义 • go/parser 语法解析 Golang 编译流程简介 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 1 + 2 * 3 *ast.BinaryExpr (+) *ast.BasicLit 1 : INT *ast *ast.BinaryExpr (*) *ast.BasicLit 2 : INT * ast.BasicLit 3 : INT Golang 编译流程简介 01-AST 源代码 抽象语法树 抽象语法树 (带语义信息) 静态单赋值 目标代码 package main import ( "go/ast" "go/parser" "go/token" ) const src0 码力 | 30 页 | 1.50 MB | 1 年前3
 Go 入门指南(The way to Go)Intel 或 AMD 处理器架构的程序构建。 图2.1 gc 编译器支持的处理器架构 当你第一次看到这套命名系统的时候你会觉得很奇葩,不过这些命名都是来自于 Plan 9 项目。 g = 编译器:将源代码编译为项目代码(程序文本) l = 链接器:将项目代码链接到可执行的二进制文件(机器代码) (相关的 C 编译器名称为 6c、8c 和 5c,相关的汇编器名称为 6a、8a 和 5a) 标记(Flags) gccgo 在编译方面都有等价的功能。 3. 文件扩展名与包(package): Go 语言源文件的扩展名很显然就是 .go 。 C 文件使用后缀名 .c ,汇编文件使用后缀名 .s 。所有的源代码文件都是通过包(packages)来组 织。包含可执行代码的包文件在被压缩后使用扩展名 .a (AR 文档)。 Go 语言的标准库(第 9.1 节)包文件在被安装后就是使用这种格式的文件。 注意 将会使用前面提到的默认值。 目标机器是指你打算运行你的 Go 应用程序的机器。 Go 编译器支持交叉编译,也就是说你可以在一台机器上构建运行在具有不同操作系统和处理器架构上运 行的应用程序,也就是说编写源代码的机器可以和目标机器有完全不同的特性(操作系统与处理器架 Go入门指南 - 14 - 本文档使用 看云 构建 构)。 为了区分本地机器和目标机器,你可以使用 $GOHOSTOS 和 $GOHOSTARCH0 码力 | 380 页 | 2.97 MB | 1 年前3 Go 入门指南(The way to Go)Intel 或 AMD 处理器架构的程序构建。 图2.1 gc 编译器支持的处理器架构 当你第一次看到这套命名系统的时候你会觉得很奇葩,不过这些命名都是来自于 Plan 9 项目。 g = 编译器:将源代码编译为项目代码(程序文本) l = 链接器:将项目代码链接到可执行的二进制文件(机器代码) (相关的 C 编译器名称为 6c、8c 和 5c,相关的汇编器名称为 6a、8a 和 5a) 标记(Flags) gccgo 在编译方面都有等价的功能。 3. 文件扩展名与包(package): Go 语言源文件的扩展名很显然就是 .go 。 C 文件使用后缀名 .c ,汇编文件使用后缀名 .s 。所有的源代码文件都是通过包(packages)来组 织。包含可执行代码的包文件在被压缩后使用扩展名 .a (AR 文档)。 Go 语言的标准库(第 9.1 节)包文件在被安装后就是使用这种格式的文件。 注意 将会使用前面提到的默认值。 目标机器是指你打算运行你的 Go 应用程序的机器。 Go 编译器支持交叉编译,也就是说你可以在一台机器上构建运行在具有不同操作系统和处理器架构上运 行的应用程序,也就是说编写源代码的机器可以和目标机器有完全不同的特性(操作系统与处理器架 Go入门指南 - 14 - 本文档使用 看云 构建 构)。 为了区分本地机器和目标机器,你可以使用 $GOHOSTOS 和 $GOHOSTARCH0 码力 | 380 页 | 2.97 MB | 1 年前3
 Go语言基础
Golang Fundamentshttps://github.com/spf13/cobra – 包名必须小写且符合Unix文件命令规则 – 包名全称,规则:[git仓库]/[用户]/[仓库路径] • 包里文件 – 源代码 – 测试代码 – API文档 – 其他资源文件 按规则可找到源代码,方便阅读 包导出名 • 包中定义的 – 类型 – 常量 – 变量 – 函数 • 如果首字母大写,则是全局可访问的 函数申明 • 使用 func 关键字申明函数 – 返回函数访问隶属函数实例的变量称为“闭包” Go语言入门资源 • 语言概览 – 官方Go指南,gotour – 系统的学习,go语言教程 • 程序结构 – 包/子包(main) • Go源代码 – 函数(main, init) • 命令行工具 • 编程参考与规范 – 官方文档”Effective Go/实效Go编程” – 官方文档,库参考文档, https://godoc.org/ topics/courses/go/REA DME.md 代码的组织-工作空间 • 可执行程序 – streak – todo • 程序包 – oauth.a – task.a • 源代码(项目) – goauth2 – streak – todo 如何使用Go编程,https://go-zh.org/doc/code.html 编程的环境 -工作空间 • GOPATH 环境变量0 码力 | 21 页 | 851.30 KB | 1 年前3 Go语言基础
Golang Fundamentshttps://github.com/spf13/cobra – 包名必须小写且符合Unix文件命令规则 – 包名全称,规则:[git仓库]/[用户]/[仓库路径] • 包里文件 – 源代码 – 测试代码 – API文档 – 其他资源文件 按规则可找到源代码,方便阅读 包导出名 • 包中定义的 – 类型 – 常量 – 变量 – 函数 • 如果首字母大写,则是全局可访问的 函数申明 • 使用 func 关键字申明函数 – 返回函数访问隶属函数实例的变量称为“闭包” Go语言入门资源 • 语言概览 – 官方Go指南,gotour – 系统的学习,go语言教程 • 程序结构 – 包/子包(main) • Go源代码 – 函数(main, init) • 命令行工具 • 编程参考与规范 – 官方文档”Effective Go/实效Go编程” – 官方文档,库参考文档, https://godoc.org/ topics/courses/go/REA DME.md 代码的组织-工作空间 • 可执行程序 – streak – todo • 程序包 – oauth.a – task.a • 源代码(项目) – goauth2 – streak – todo 如何使用Go编程,https://go-zh.org/doc/code.html 编程的环境 -工作空间 • GOPATH 环境变量0 码力 | 21 页 | 851.30 KB | 1 年前3
 Go 入门指南(The way to Go)书栈(BookStack.CN) 构建 图2.1 gc 编译器支持的处理器架构 当你第一次看到这套命名系统的时候你会觉得很奇葩,不过这些命名都是来自于 Plan 9 项目。 1. g = 编译器:将源代码编译为项目代码(程序文本) 2. l = 链接器:将项目代码链接到可执行的二进制文件(机器代码) (相关的 C 编译器名称为 6c、8c 和 5c,相关的汇编器名称为 6a、8a 和 5a) build 和 go install 等命令,而这些指令会自动调用相关的编译器或链接器。 如果你想获得更深层次的信息,你可以在目录 $GOROOT/src/cmd 下找到编译器和链接器的源代码。Go 语言 本身是由 C 语言开发的,而不是 Go 语言(Go 1.5 开始自举)。词法分析程序是 GNU bison,语法分析 程序是名为 $GOROOT/src/cmd/gc/go.y 在编译方面都有等价的功能。 3. 文件扩展名与包(package): Go 语言源文件的扩展名很显然就是 .go 。 C 文件使用后缀名 .c ,汇编文件使用后缀名 .s 。所有的源代码文件都是通过包(packages)来组 织。包含可执行代码的包文件在被压缩后使用扩展名 .a (AR 文档)。 2.1 平台与架构 - 26 - 本文档使用 书栈(BookStack.CN)0 码力 | 466 页 | 4.44 MB | 1 年前3 Go 入门指南(The way to Go)书栈(BookStack.CN) 构建 图2.1 gc 编译器支持的处理器架构 当你第一次看到这套命名系统的时候你会觉得很奇葩,不过这些命名都是来自于 Plan 9 项目。 1. g = 编译器:将源代码编译为项目代码(程序文本) 2. l = 链接器:将项目代码链接到可执行的二进制文件(机器代码) (相关的 C 编译器名称为 6c、8c 和 5c,相关的汇编器名称为 6a、8a 和 5a) build 和 go install 等命令,而这些指令会自动调用相关的编译器或链接器。 如果你想获得更深层次的信息,你可以在目录 $GOROOT/src/cmd 下找到编译器和链接器的源代码。Go 语言 本身是由 C 语言开发的,而不是 Go 语言(Go 1.5 开始自举)。词法分析程序是 GNU bison,语法分析 程序是名为 $GOROOT/src/cmd/gc/go.y 在编译方面都有等价的功能。 3. 文件扩展名与包(package): Go 语言源文件的扩展名很显然就是 .go 。 C 文件使用后缀名 .c ,汇编文件使用后缀名 .s 。所有的源代码文件都是通过包(packages)来组 织。包含可执行代码的包文件在被压缩后使用扩展名 .a (AR 文档)。 2.1 平台与架构 - 26 - 本文档使用 书栈(BookStack.CN)0 码力 | 466 页 | 4.44 MB | 1 年前3
 Hello 算法 1.0.0b1 Golang版写在前面 0.1. 关于本书 本项目致力于构建一本开源免费、新手友好的数据结构与算法入门书。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑; ‧ 算法源代码皆可一键运行,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言; ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论一般能在两日内得到回复; 对数据结构与算法有朦胧的理解,在 会与不会之间反复横跳,那么这本书就是为你而写! 如果您是「算法老手」,已经积累一定刷题量,接触过大多数题型,那么本书可以帮助你回顾与梳理算法知识 体系,仓库源代码可以被当作“刷题工具库”或“算法字典”来使用。 如果您是「算法大佬」,希望可以得到你的宝贵意见建议,或者一起参与创作。 � 前置条件 您需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 你以图为主线,将文字内容(一般在图的上方)对齐到 图中内容,综合来理解。 Figure 0‑3. 动画图解示例 0.2.4. 在代码实践中加深理解 本书的配套代码托管在GitHub 仓库,源代码包含详细注释,配有测试样例,可以直接运行。 ‧ 若学习时间紧张,建议至少将所有代码通读并运行一遍。 ‧ 若时间允许,强烈建议对照着代码自己敲一遍。相比于读代码,写代码的过程往往能带来新的收获。0 码力 | 190 页 | 14.71 MB | 1 年前3 Hello 算法 1.0.0b1 Golang版写在前面 0.1. 关于本书 本项目致力于构建一本开源免费、新手友好的数据结构与算法入门书。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑; ‧ 算法源代码皆可一键运行,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言; ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论一般能在两日内得到回复; 对数据结构与算法有朦胧的理解,在 会与不会之间反复横跳,那么这本书就是为你而写! 如果您是「算法老手」,已经积累一定刷题量,接触过大多数题型,那么本书可以帮助你回顾与梳理算法知识 体系,仓库源代码可以被当作“刷题工具库”或“算法字典”来使用。 如果您是「算法大佬」,希望可以得到你的宝贵意见建议,或者一起参与创作。 � 前置条件 您需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 你以图为主线,将文字内容(一般在图的上方)对齐到 图中内容,综合来理解。 Figure 0‑3. 动画图解示例 0.2.4. 在代码实践中加深理解 本书的配套代码托管在GitHub 仓库,源代码包含详细注释,配有测试样例,可以直接运行。 ‧ 若学习时间紧张,建议至少将所有代码通读并运行一遍。 ‧ 若时间允许,强烈建议对照着代码自己敲一遍。相比于读代码,写代码的过程往往能带来新的收获。0 码力 | 190 页 | 14.71 MB | 1 年前3
 Hello 算法 1.0.0b2 Golang版写在前面 0.1. 关于本书 本项目致力于构建一本开源免费、新手友好的数据结构与算法入门书。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑; ‧ 算法源代码皆可一键运行,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言; ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论一般能在两日内得到回复; 对数据结构与算法有朦胧的理解,在 会与不会之间反复横跳,那么这本书就是为你而写! 如果您是「算法老手」,已经积累一定刷题量,接触过大多数题型,那么本书可以帮助你回顾与梳理算法知识 体系,仓库源代码可以被当作“刷题工具库”或“算法字典”来使用。 如果您是「算法大佬」,希望可以得到你的宝贵意见建议,或者一起参与创作。 � 前置条件 您需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 你以图为主线,将文字内容(一般在图的上方)对齐到 图中内容,综合来理解。 Figure 0‑3. 动画图解示例 0.2.4. 在代码实践中加深理解 本书的配套代码托管在GitHub 仓库,源代码包含详细注释,配有测试样例,可以直接运行。 ‧ 若学习时间紧张,建议至少将所有代码通读并运行一遍。 ‧ 若时间允许,强烈建议对照着代码自己敲一遍。相比于读代码,写代码的过程往往能带来新的收获。0 码力 | 202 页 | 15.73 MB | 1 年前3 Hello 算法 1.0.0b2 Golang版写在前面 0.1. 关于本书 本项目致力于构建一本开源免费、新手友好的数据结构与算法入门书。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑; ‧ 算法源代码皆可一键运行,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言; ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论一般能在两日内得到回复; 对数据结构与算法有朦胧的理解,在 会与不会之间反复横跳,那么这本书就是为你而写! 如果您是「算法老手」,已经积累一定刷题量,接触过大多数题型,那么本书可以帮助你回顾与梳理算法知识 体系,仓库源代码可以被当作“刷题工具库”或“算法字典”来使用。 如果您是「算法大佬」,希望可以得到你的宝贵意见建议,或者一起参与创作。 � 前置条件 您需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 你以图为主线,将文字内容(一般在图的上方)对齐到 图中内容,综合来理解。 Figure 0‑3. 动画图解示例 0.2.4. 在代码实践中加深理解 本书的配套代码托管在GitHub 仓库,源代码包含详细注释,配有测试样例,可以直接运行。 ‧ 若学习时间紧张,建议至少将所有代码通读并运行一遍。 ‧ 若时间允许,强烈建议对照着代码自己敲一遍。相比于读代码,写代码的过程往往能带来新的收获。0 码力 | 202 页 | 15.73 MB | 1 年前3
 Hello 算法 1.0.0b4 Golang版0. 前言 0.1. 关于本书 本项目旨在创建一本开源免费、新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么这本书正是为您量身定制! 如果您已经积累一定刷题量,熟悉大部分题型,那么本书可助您回顾与梳理算法知识体系,仓库源代码可以 被当作“刷题工具库”或“算法字典”来使用。 若您是算法大神,我们期待收到您的宝贵建议,或者一起参与创作。 � 前置条件 您需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0 辅, 综合两者来理解内容。 Figure 0‑2. 动画图解示例 0. 前言 hello‑algo.com 4 0.2.3. 在代码实践中加深理解 本书的配套代码托管在GitHub 仓库,源代码包含详细注释,并附有测试样例,可直接运行。 如果学习时间有限,建议你至少通读并运行所有代码。如果时间充裕,建议参照代码自行敲一遍。与仅阅读 代码相比,编写代码的过程往往能带来更多收获。 Figure0 码力 | 347 页 | 27.40 MB | 1 年前3 Hello 算法 1.0.0b4 Golang版0. 前言 0.1. 关于本书 本项目旨在创建一本开源免费、新手友好的数据结构与算法入门教程。 ‧ 全书采用动画图解,结构化地讲解数据结构与算法知识,内容清晰易懂、学习曲线平滑。 ‧ 算法源代码皆可一键运行,支持 Java, C++, Python, Go, JS, TS, C#, Swift, Zig 等语言。 ‧ 鼓励读者在章节讨论区互帮互助、共同进步,提问与评论通常可在两日内得到回复。 若您是算法初学者,从未接触过算法,或者已经有一些刷题经验,对数据结构与算法有模糊的认识,在会与 不会之间反复横跳,那么这本书正是为您量身定制! 如果您已经积累一定刷题量,熟悉大部分题型,那么本书可助您回顾与梳理算法知识体系,仓库源代码可以 被当作“刷题工具库”或“算法字典”来使用。 若您是算法大神,我们期待收到您的宝贵建议,或者一起参与创作。 � 前置条件 您需要至少具备任一语言的编程基础,能够阅读和编写简单代码。 0 辅, 综合两者来理解内容。 Figure 0‑2. 动画图解示例 0. 前言 hello‑algo.com 4 0.2.3. 在代码实践中加深理解 本书的配套代码托管在GitHub 仓库,源代码包含详细注释,并附有测试样例,可直接运行。 如果学习时间有限,建议你至少通读并运行所有代码。如果时间充裕,建议参照代码自行敲一遍。与仅阅读 代码相比,编写代码的过程往往能带来更多收获。 Figure0 码力 | 347 页 | 27.40 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 两个main是两个标识符。 标 识符和关键字将在后续的一篇文章中讲解。 此程序的第一行指定了当前源代码文件所处的包的包名(此处为main)。 第二行 是一个空行,用来增强可读性。 第三和第四行声明了一个名为main的函数。 此函 数为程序的入口函数。 运行一个Go程序 Go官方工具链工具要求所有的Go源代码文件必须以.go后缀结尾。 这里,我们假设 上面展示的最简单的Go程序存放在一个名叫simplest-go-program run simplest-go-program.go 什么也没输出?是的,此程序不做什么有实质意义的事儿。 如果代码中有语法错误,这些错误将输出在终端中。 如果一个程序的main包中有若干Go源代码文件,我们也可以使用下面的命令运行此 程序。 $ go run . 注意: go run子命令并不推荐在正式的大项目中使用。go run子命令只是一种方 便的方式来运行简单的Go程序。 对于正式的项目,最好使用go0 码力 | 591 页 | 21.40 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 第9章:函数声明和调用 两个main是两个标识符。 标 识符和关键字将在后续的一篇文章中讲解。 此程序的第一行指定了当前源代码文件所处的包的包名(此处为main)。 第二行 是一个空行,用来增强可读性。 第三和第四行声明了一个名为main的函数。 此函 数为程序的入口函数。 运行一个Go程序 Go官方工具链工具要求所有的Go源代码文件必须以.go后缀结尾。 这里,我们假设 上面展示的最简单的Go程序存放在一个名叫simplest-go-program run simplest-go-program.go 什么也没输出?是的,此程序不做什么有实质意义的事儿。 如果代码中有语法错误,这些错误将输出在终端中。 如果一个程序的main包中有若干Go源代码文件,我们也可以使用下面的命令运行此 程序。 $ go run . 注意: go run子命令并不推荐在正式的大项目中使用。go run子命令只是一种方 便的方式来运行简单的Go程序。 对于正式的项目,最好使用go0 码力 | 591 页 | 21.40 MB | 1 年前3
 Go Web编程装方式适合那些熟悉相应系统的用户。 最后,如果你想在同一个系统中安装多个版本的Go,你可以参考第三方工具GVM,这是目前在这方面做得最好的工 具,除非你知道怎么处理。 Go源码安装 Go源码安装 在Go的源代码中,有些部分是用Plan 9 C和AT&T汇编写的,因此假如你要想从源码安装,就必须安装C的编译工具。 在Mac系统中,只要你安装了Xcode,就已经包含了相应的编译工具。 在类Unix系统 ,多个目录 的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下 以上 $GOPATH 目录约定有三个子目录: src 存放源代码(比如:.go .c .h .s等) pkg 编译后生成的文件(比如:.a) bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中) 以后我所有的例子都是以mygo作为我的gopath目录 beedb.go util.go 从上面的结构我们可以很清晰的看到,bin目录下面存的是编译之后可执行的文件,pkg下面存放的是函数包,src下 面保存的是应用源代码 13 [1] Windows系统中环境变量的形式为%GOPATH%,本书主要使用Unix形式,Windows用户请自行替换。 links links 目录 上一节: GO安装 下一节:0 码力 | 295 页 | 5.91 MB | 1 年前3 Go Web编程装方式适合那些熟悉相应系统的用户。 最后,如果你想在同一个系统中安装多个版本的Go,你可以参考第三方工具GVM,这是目前在这方面做得最好的工 具,除非你知道怎么处理。 Go源码安装 Go源码安装 在Go的源代码中,有些部分是用Plan 9 C和AT&T汇编写的,因此假如你要想从源码安装,就必须安装C的编译工具。 在Mac系统中,只要你安装了Xcode,就已经包含了相应的编译工具。 在类Unix系统 ,多个目录 的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下 以上 $GOPATH 目录约定有三个子目录: src 存放源代码(比如:.go .c .h .s等) pkg 编译后生成的文件(比如:.a) bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中) 以后我所有的例子都是以mygo作为我的gopath目录 beedb.go util.go 从上面的结构我们可以很清晰的看到,bin目录下面存的是编译之后可执行的文件,pkg下面存放的是函数包,src下 面保存的是应用源代码 13 [1] Windows系统中环境变量的形式为%GOPATH%,本书主要使用Unix形式,Windows用户请自行替换。 links links 目录 上一节: GO安装 下一节:0 码力 | 295 页 | 5.91 MB | 1 年前3
共 19 条
- 1
- 2














