这是介绍一些GO语言基本特性教程的第一部分。如果你是第一次使用Go,确保看一眼Go简单入门指导,这篇文章介绍了go命令,go模块,和一个简单的go代码。
在这篇知道中,你讲创建两个模块。第一个是一个库,为了能让其它的库和应用导入。第二个是一个调用者应用,它将使用第一个模块。
本教程的序列包含了七个简单的主题,每一个都阐明了一个语言的不同部分。
从创建一个Go模块开始。在一个模块中,你为一个离散的和有用的函数集收集一个或多个有关的包。例如,你能使用带有做金融分析函数的包创建一个模块,以便于别人在写金融应用的时候能够使用你的工作。
Go代码是被分组成包,并且包是被分组成模块。你的模块指定了运行你代码需要的依赖,包括Go的版本,和其它需要的模块集。
当你在模块中添加或优化功能,你发布模块的新版本。开发者写调用你模块函数的代码,能够导入已经更新的模块,在发布到生产去使用之前进行测试。
打开一个命令提示符,进入到你的主目录;
$ cd
$
为你的Go模块源代码创建一个"greetings"文件夹;
$ mkdir greetings
$ cd greetings/
$
使用go mod init命令开始你的模块
运行go mod init命令,给它一个模块路径,例如example.com/greetings。如果你发布一个模块,这必须是一个能被Go工具下载的路径,这将是你的代码仓库。
$ go mod init example.com/greetings
go: creating new go.mod: module example.com/greetings
$
这个go mod init命令创建了一个go.mod文件,能够跟踪你的代码依赖。目前,这个文件仅仅包含了模块命令和你代码支持的Go的版本。但是只要你添加依赖,go.mod文件将列出你代码依赖的版本。这保持了构建的可重现,并且能够直接控制模块版本的使用。
$ ll
total 8
drwxr-xr-x 3 lifei staff 96 8 17 00:07 ./
drwxr-xr-x 4 lifei staff 128 8 17 00:03 ../
-rw-r--r-- 1 lifei staff 38 8 17 00:07 go.mod
$ cat go.mod
module example.com/greetings
go 1.18
$
在你的文本编辑器上,创建一个文件,在上面写你的代码,把它叫做"greetings.go";
复制下面的代码到greetings.go文件中,并保存文件;
package greetings
import "fmt"
// Hello 为一个命名的人返回一个问候
func Hello(name string) string {
// 返回一个问候,嵌套名字在消息中
message := fmt.Sprintf("Hi, %v. Welcome!", name)
return message
}
这是你的模块的第一段代码。它给任何调用者返回一个问候。你将在下一部分写代码调用这个函数。
在这个代码中:
声明了一个“greeting”包,用于收集相关函数;
实现了“Hello”函数,返回一个问候;
这个函数需要一个string类型的name参数,这个函数也返回一个string。在Go中,一个函数它的名字使用一个大写字母开始,它能够被不在相同包的函数调用。这个Go中被称为导出名称。

声明一个message变量持有你的问候;
在Go中,:=操作符是一个快捷方式,用于在一行中声明和初始化一个变量(Go使用右边的值来确定变量的类型)。
多走一步,你也能这样写:
var message string
message = fmt.Sprintf("Hi, %v. Welcome!", name)
使用fmt 包的Sprintf函数去创建一个问候语。第一个参数是格式化的字符串,并且Sprintf用name参数的值替换%v格式动词。插入name的值,完成问候语。
将已经格式化后的问候语返回给调用者;