怎么配置golang项目module模块?
为什么要配置模块?
app.gob.gomodules/b.gomodulesimporta.goapp.gomaingo 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.modreplacemodule 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/Ksaveapi/.goapp.goapi.Ksaveapp/app.goapi/api/ksave.gogo.modcdgo mod init appgo mod init apigo.modwebindex.htmlHello!!app/go.modmodule app
go 1.15
replace ksite.10knet.com/api => ./api
app.gopackage 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.gopackage 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/KsaveCtrl+Cgo build app.goapp./app欢迎批评指正,交流学习。
