1)启动gomod,配置代理
export GO111MODULE=on
export GOPROXY=https://goproxy.cn
2)go mod init xxx 为每个模块建立建立go.mod
3)工程文件
main.go
package main
import (
"github.com/gomodule/redigo/redis"
"mymodule"
"mynet"
"time"
)
func main() {
var _, err = redis.Dial("tcp", "127.0.0.1:6379")
if err != nil{
}
ch := make(chan int)
go mymodule.Consumer(ch)
go mymodule.Produce(ch)
mynet.PrintNetInfo()
time.Sleep(1 * time.Second)
}
go.mod
module HelloGo
go 1.13
replace mymodule => ./mymodule
replace mynet => ./mynet
require (
github.com/gomodule/redigo v2.0.0+incompatible // indirect
mymodule v0.0.0-00010101000000-000000000000 // indirect
mynet v0.0.0-00010101000000-000000000000 // indirect
)
go.sum
github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0=
github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
github.com/gomodule/redigo/redis v0.0.0-do-not-use h1:J7XIp6Kau0WoyT4JtXHT3Ei0gA1KkSc6bc87j9v9WIo=
mynet/go.mod
module mynet
go 1.13
mynet/go.mod
package mynet
import "fmt"
func PrintNetInfo() {
fmt.Println("Net Info")
}
mymodule/go.mod
module mymodule
go 1.13
mymodule/consumer.go
package mymodule
import "fmt"
func Consumer(ch <-chan int) {
for i := 0; i < 10; i++ {
v := <-ch;
fmt.Println("Receive:", v)
}
}
mymodule/produce.go
package mymodule
import "fmt"
func Produce(ch chan<- int) {
for i := 0; i < 10; i++ {
ch <- i;
fmt.Println("Send:", i)
}
}
4)运行
➜ HelloGo go run main.go
Net Info
Send: 0
Receive: 0
Receive: 1
Send: 1
Send: 2
Receive: 2
Receive: 3
Send: 3
Send: 4
Receive: 4
Receive: 5
Send: 5
Send: 6
Receive: 6
Receive: 7
Send: 7
Send: 8
Receive: 8
Receive: 9
Send: 9
这样就管理了整个模块