怎么配置golang项目module模块?
为什么要配置模块?
app.gob.gomodules/b.gomodulesimporta.go
app.gomain
go env GO111MODULEonautogo env -w GO111MODULE="on"
文件结构
.goapp/b/,modules/
go.modcd appgo mod init appgo mod init bgo mod init modules
实现模块引用
go mod init ...app.goapp/go.modreplace
module app
go 1.15
replace abc.com/b => ../b
注意这里的abc.com只要和app.go中import的内容一致就行,可以是任意网址。
../app/b/b/app/replace abc.com/b => ./b
被调用的函数
b.goc.gofunc Hello()...func hello()...
b.gopackage bc.gomodules/package modules
实战案例:创建web服务器
app.go.../api/Ksave
api/.goapp.goapi.Ksave
app/app.goapi/api/ksave.gogo.modcdgo mod init appgo mod init apigo.mod
webindex.htmlHello!!
app/go.mod
module app
go 1.15
replace ksite.10knet.com/api => ./api
app.go
package main
import (
"fmt"
"log"
"net/http"
"os"
"path"
"strconv"
"ksite.10knet.com/api"
)
func main() {
//获取当前程序运行的目录
dir, _ := os.Getwd()
webDir := path.Join(dir, "../web")
//设置文件服务
http.Handle("/", http.FileServer(http.Dir(webDir)))
//设置API接口
http.HandleFunc("/api/Ksave", api.Ksave)
//启动服务
port := 80
fmt.Println("Server is running on port " + strconv.Itoa(port) + " ...")
log.Fatal(http.ListenAndServe(":"+strconv.Itoa(port), nil))
}
ksave.go
package api
import "net/http"
// Ksave 只是返回一个问候语.
func Ksave(w http.ResponseWriter, r *http.Request) {
w.Write([]byte("Hello Ksave!"))
return
}
cdapp/go run app.gohttp://localhosthttp://localhost/api/Ksave
Ctrl+C
go build app.goapp./app
欢迎批评指正,交流学习。