Erlo

GO语言模块

2021-06-24 21:00:10 发布   377 浏览  
页面报错/反馈
收藏 点赞

golang下载教程

模块

GO语言中的模块与编译过程中的模块是相对应的概念,同一模块下的所有源码(无论是否在一个源文件中)都会一起编译成为目标文件。 目标文件再和其它模块的目标文件以及整个程序所依赖的操作系统库文件一起链接成可执行文件。

初始化模块

  1. 打开终端(最好是Power Shell),在你喜欢的位置新建一个目录,比如A:/Learn/Go/Work。

  2. 切换到A:/Learn/Go/Work目录下,执行go mod init Aoi命令;

go mod init Aoi命令会自动在当前目录下创建一个go.mod文本文件。

go.mod文件

上面go mod init Aoi命令创建的go.mod文件内容应该如下:

module Aoi // Aoi是我们指定的模块名

go 1.16 // 1.16是golang编译器版本号

go.mod文件有两个作用:

  1. go.mod文件的存在表示它所在的目录是一个模块的根目录。

  2. go.mod文件中保存了模块名、依赖、编译器版本等相关信息。

Hello World

在Aoi模块根目录下创建一个hello.go文件,输入以下内容:

package main // package是包声明,因为本模块是主模块,所以包名为main。一个程序只能有一个主模块/包

// GO语言的主函数既没有参数也没有返回值。
func main(){
  println("Hello World") // println()是向标准错误输出端口输出内容的函数,输出结尾会换行;只能输出字符串、数字等纯量值,不能输出数组、结构体等复合值。
}

切换到Aoi模块根目录下执行go run hello.go命令编译运行hello.go,就会看到输出的Hello World字样了。

导入模块

远程模块导入

按照上面步骤,在A:/Learn/golearn目录下再创建一个模块,在模块根目录下创建一个m.go文本文件。

m.go内容为:

package pkg // hello.go将通过包名pkg引用本模块/包的内容,包名也兼具了命名空间的功能。

var Str = "I Love Aoi Sola" // 模块/包中首字母大写的变量、函数等是暴露内容,可以被其它模块/包引用。

然后把模块目录上传到GIT库,再按照下图方式修改模块名:

在hello.go文件中加入导入模块语句:

package main

import "gitee.com/ChehgAnXu/golearn" // 通过模块名导入模块,因为模块名与库地址相同,所以不用再单独指定库地址

func main(){
  println(pkg.Str)

在hello.go所在目录(也就是Aoi模块的根目录)下执行go mod tidy命令更新go.mod文件,会自动下载GIT库中的gitee.com/ChehgAnXu/golearn模块到本地。

并且Aoi模块的go.mod文件内容会变为:

module aoi

go 1.16

require gitee.com/ChehgAnXu/golearn v0.0.0-20210624111742-626d6b55d79e // 指定了本模块依赖于gitee.com/ChehgAnXu/golearn模块。
// 后面的v0.0.0是库中标签/发行标签的版本号,如库没有创建标签就是v0.0.0;
// 20210624111742-626d6b55d79e是库内容的校验和值,防止数据传输过程中丢失或被恶意篡改。

此时在Aoi模块根目录下执行go run hello.go命令编译运行hello.go,就会看到输出I Love Aoi Sola字样。

如果更新了远程库内容,则要删除go.mod文件中的依赖语句,并在模块根目录下执行go mod tidy更新go.mod内容; 会重新从远程库下载内容到本地。

本地模块导入

将A:/Learn/golearn目录下的m.go文件内容修改为:

package pkg // hello.go

var Str = "我是本地模块"

将Aoi模块的go.mod文件内容修改为:

module aoi

go 1.16
// 删除指定依赖内容的语句
replace gitee.com/ChehgAnXu/golearn => A:/Learn/golearn // 通过replace语句将gitee.com/ChehgAnXu/golearn重定向到本地目录A:/Learn/golearn

然后再到Aoi模块根目录下执行go mod tidy命令更新go.mod文件,并执行go run hello.go命令编译运行hello.go。

就会看到输出我是本地模块字样,说明导入的是本地模块,而不是远程库中的模块。

注意: 一定要在模块根目录下执行go run hello.go命令编译源代码,不能在其它目录下执行go run A:/Learn/Go/Work/hello.go命令编译,不然的话会识别不了依赖内容。

登录查看全部

参与评论

评论留言

还没有评论留言,赶紧来抢楼吧~~

手机查看

返回顶部

给这篇文章打个标签吧~

棒极了 糟糕透顶 好文章 PHP JAVA JS 小程序 Python SEO MySql 确认