1:建立目录gotestpro,命令mkdir gotestpro
2:建立main函数,。内容如下:
package main
import (
"fmt"
"lib"
_ "net/http"
"github.com/tidwall/sjson"
)
func init() {
println("main.init.2")
}
func main() {
test()
}
func init() {
println("main.init.1")
structJSON, _ := sjson.Set("", "", "aa")
fmt.Println("structJSON:", structJSON)
}
func test() {
println(lib.Sum(1, 2, 3))
}
3:生成go mod文件 go mod init main.go
4:创建lib目录并创建sum.go文件,文件内容如下:
package lib
func init() {
println("sum.init")
}
func Sum(x ...int) int {
n := 0
for _, i := range x {
n += i
}
return n
}
5:进入lib目录使用命令:go mod init sum.go 生成sum.go的go.mod
6:main的go.mod值和lib的下的go.mod值如下,在main的go.mod引入lib的命令见下:
[liushuanpeng@nbadev.bj.sm gotestpro]$ cat go.mod
module main
go 1.14
require github.com/tidwall/sjson v1.2.1
require lib v0.0.0
replace lib => ./lib
[liushuanpeng@nbadev.bj.sm gotestpro]$
[liushuanpeng@nbadev.bj.sm gotestpro]$ cat lib/go.mod
module sum.go
go 1.14
[liushuanpeng@nbadev.bj.sm gotestpro]$
main包下面有多个文件的情况,存在test.go和main.go的情况,如下代码:
[liushuanpeng@nbadev.bj.sm gotestpro]$ cat main.go
package main
import (
"fmt"
_ "net/http"
"github.com/tidwall/sjson"
)
func init() {
println("main.init.2")
}
func main() {
test()
}
func init() {
println("main.init.1")
structJSON, _ := sjson.Set("", "", "aa")
fmt.Println("structJSON:", structJSON)
}
[liushuanpeng@nbadev.bj.sm gotestpro]$
[liushuanpeng@nbadev.bj.sm gotestpro]$ cat test.go
package main
import (
"lib"
)
func init() {
println("test.init")
}
func test() {
println(lib.Sum(1, 2, 3))
}
[liushuanpeng@nbadev.bj.sm gotestpro]$
编译命令:go build main.go test.go
或
go build *go