这是介绍Go语言特性的第一部分,如果刚刚接触Go,请务必去看 前文,那里介绍了go 命令行,Go模块,和非常简单的Go代码,
本章,你将创建两个模块, 第一个是用来引入其他库或应用. 第二个是一个使用第一个模块的调用器,
本章罗列了七个主题,每个主题都包含了语言的不同特性:
- 创建一个模块--写一个能被其他模块调用的简单模块
- 从另一个模块调用你的代码--引入你的新模块
- 返回并处理错误--一个简单的错误处理
- 返回一个随机问候--用切片slices处理数据<python中也有切片函数.>
- 使用测试--使用Go的测试单元 来测试你的代码
- 编译和安装应用--编译并安装你的本地代码
先决条件
- 一些编程经验. 这些代码虽然很简单,但是这能帮你了解一些基本知识,如:函数,循环和数组
- 找一个代码编辑器. 任何文本编辑器都能很好的支持GO,目前最受欢迎的编辑器是VSCode(免费)和Vim(免费)
- 命令行终端.Go可以运行在Mac,linux,Windows上的任何终端工具
创建一个能被他人使用的模块
在一个模块中,你为一组离散且有用的功能收集一个或多个相关包,比如,你可以创建一个模块包,它能够完成财务分析功能,以供其他编写财务系统的人调用,
Go代码被包含在包中,包在模块中,为了运行代码,你的模块需要指定依赖项,包括Go版本及其所需的其他模块。
当你的模块添加或改进了功能时,你需要发布新的版本号.这样其他开发者在上线之前就能测试新版本
1.2,打开命令行,并创建 greetings文件夹. <原文啰里啰唆一大堆>
3.使用 go mod init 命令 初始化模块
运行go mod init 命令,给他一个模块路径,比如: example.com/greeting.如果你要发行模块,这个路径必须是能此模块能被下载的路径,通常,是你的代码库
$ go mod init example.com/greetings
go: creating new go.mod: module example.com/greetings
go mod init 会创建一个go.mod文件,用来跟踪你的代码依赖性,目前为止,这个文件仅仅包含你的模块名称和你代码所支持的Go版本,当你增加依赖时,go.mod文件将列出你代码所依赖的版本,这将保持构建的可复制性,并让你能直接控制要使用的模块版本<有点像,webpack的 package.json 的功能>
4.新建文件并命名为greeting.go
5.粘贴下面内容感到greeting.go内
package greetings import "fmt" // Hello returns a greeting for the named person. func Hello(name string) string { // Return a greeting that embeds the name in a message. message := fmt.Sprintf("Hi, %v. Welcome!", name) return message }
这是模块内的第一份代码,这会返回给调用者一个问候,接下来,会写一个调用这个函数的代码
上面代码中,你
- 声明了一个greetings 包,用来表现相关功能
- 实现了一个Hello函数并返回问候
这个函数有一个名为name 的stirng类型的参数,并且能返回一个string,在Go语言中,首字母大写的函数名称能被其他包调用,这个特性在Go中称为 输出命名(exported name) ,可以阅读 "输出命名" 获得更多信息 - 声明一个名为 massage的变量 用来保存你的问候
在Go中, :=操作符能让声明和初始化在一行内表现出来,(Go使用右侧的值来判断出变量的类型).常规写法,是这样的:
- var message string message = fmt.Sprintf("Hi, %v. Welcome!", name)
- 使用fmt包中的Sprintf 函数来创建出问候消息, 第一个参数是一个格式化字符串,Sprintf用name参数的值替换%v格式谓词。插入name参数的值完成问候语文本。
- 向调用者返回格式化后的问候文本
接下来,你就可以在另一个模块中调用这个函数了.