本来是想着使用Go完成一些小功能,跑一跑代码,然后发现我对Go中的模块的使用方法还不熟悉,所以跟着教程继续学习一下。
模块创建
教程地址:https://golang.google.cn/doc/tutorial/create-module
按照教程,我们写一个能够打招呼的模块greetings,里面有个打招呼函数Hello。
模块本质上也是一个Go代码文件,在编写的过程来看和普通的Go代码文件时一样的。不同的地方在于,模块文件一般不是单独运行的,它的代码主要实现一些函数,供其他文件进行调用。
跟其他代码项目一样,先创建一个专属的文件夹:
然后执行go mod init:
建立代码文件并写好如下代码:
可以看到代码的格式也是和其他代码差不多,需要注意是:函数的名称“Hello”是首字母大写的,在Go中,这表示这个函数可以被外部使用。
保存代码,这样就构建好了模块。
模块使用
教程地址:https://golang.google.cn/doc/tutorial/call-module-code
我们按照教程,写一个代码,传入一个人名,使用上面写的打招呼函数看看能不能正确运行。
建立专属文件夹:
由于我之前有一个hello目录了,所以这里用hello2。
运行go mod init:
代码内容:
可以看到,在这个代码文件中,import的时候多了一个刚才写的模块,引用的路径是给go mod提供的路径。
并且,这个要执行的hello2.go文件是在main这个package中的,在Go中,需要执行的代码都需要在main这个package中。
截至到这里,我们的hello2.go代码路径是example.com/hello2,所引用的模块在example.com/greetings,这些我们都声明了。
但是教程说我们还需要告诉本地greetings模块所在的相对位置,需要执行:
(我想着如果模块多的话,每个这样做不就很麻烦,后续再探讨一下这个做法的必要性和是否有可替代的方法。)
然后执行:
运行代码,就能够得到正确输出: