如何配置golang项目模块?

必须在

为什么要配置模块?app.go文件中调用b.go中的函数。 此外,还必须调用modules/文件夹中所有. go文件的函数。 在这种情况下,必须将整个b.go或modules文件夹创建为模块。 可以像golang嵌入式模块一样直接将import导入到a.go中使用。

当然,app.go本身也被视为一个模块,可以用作主条目模块。

使用命令行go env GO111MODULE检查golang配置是否打开了模块开发模式。 打开或返回自动,也可以继续。 否则,请运行go env -w GO111MODULE='on '命令打开模块开发模式。

文件结构上的照片所示,每个模块必须包含一个或多个. go文件的文件夹。 调用模块app/和被调用的模块b/,modules/之间没有必然的层次关系。

每个模块下面应该都有go.mod文件。 必须在命令行中使用类似cd app的命令进入每个模块文件夹,然后运行go mod init app或go mod init b,go mod init modules自动生成。

实现模块引用中,go mod init .只需分别生成每个模块。 如果要在app.go中调用其他模块,replace还将介绍在app/文件夹下的go.mod中调用的模块的位置。 直接添加代码,添加后如下: (

模块应用程序

go 1.15

replace abc.com/b=./b请注意,这里的abc.com只要与app.go上的import内容一致即可,可以是任何网站。

箭头后面的是b/文件夹的实际目录, /显示了上一层。 也就是说,app/文件夹和b/文件夹位于同一层。 如果b/在app/下,则为replace abc.com/b=./b,而不是两点。

被调用的函数必须将b.go和c.go函数名称大写,才能调用。 func Hello () .是可能的。 func Hello ) .不能。

另请注意,b.go的第一行是package b,c.go属于modules/模块,因此第一行是package modules。

必须创建一个提供

实战案例:创建web服务器web文件服务并能够满足诸如./api/Ksave之类的API接口请求的服务器程序app.go。

因为可能有很多API接口,所以我们创建了一个api/文件夹,以便可以将每个接口分别写入. go文件进行管理。 在app.go中,可以使用api.Ksave调用。

这个文件目录是怎么建立的? 首先创建app/文件夹,然后创建app.go文件和api/文件夹,然后在api/文件夹下创建ksave.go。 两个go.mod使用命令生成,首先在终端上通过cd命令进入相应的文件夹。 然后,go mod init app和go mod init api生成go.mod。

web文件夹用于容纳web文件,其中手动创建index.html并将其写入h1Hello! /h1就可以了。

然后修改app/下的go.mod。 内容如下。

模块应用程序

go 1.15

replaceksite.10k net.com/API=./API以下是编码: 以下是app.go的完整代码。

包主

导入(

' fmt '

“日志”

' net/http '

操作系统

' path '

' strconv '

' ksite.10knet.com/api '

func main () }

//获取当前程序正在运行的目录

dir,_ :=os.Getwd (

webdir:=path.join(dir,' ./web ' ) )。

//文件服务设置

HTTP.handle ()、http.file server (http.dir )、webdir ) )

设置//API接口

HTTP.Handlefunc(/API/ksave ),api.Ksave ) )。

//开始服务

port :=80

fmt.println (serverisrunningonport ' strconv.itoa ) . ) )

log.fatal (http.listenandserve (: ) strconv.itoa ) port ),nil ) )

以下是ksave.go的完整代码。

包API

import 'net/http '

//Ksave只是回复问候语。

功能保存(w http.response writer,r *http.Request ) )

w.write([]byte ) ' Helloksave!' ) )

返回

}最后,使用cd命令进入app/文件夹下,运行go run app.go即可运行服务。 打开首页http://localhost和接口测试页http://localhost/api/Ksave可以看到问候。

小心! 每次运行之前,请使用Ctrl C快捷键关闭当前程序。 否则可能会失败。 重新启动计算机以解决。

此外,运行go build app.go时,还会得到上面的文件列表所示的app程序,运行./app后即可运行。 同样注意关闭。

欢迎批评指正,交流学习。