(感觉略麻烦)go.mod管理工程,不要再使用GOROOT GOPATH等环境变量,可以在任意目录下建立工程

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

这样就管理了整个模块

猜你喜欢

转载自blog.csdn.net/themagickeyjianan/article/details/106921681
今日推荐