Go语言包管理学习

重点

首先你要确认你的GOPath

我是winodw系统,所以如图
Go语言包管理学习_第1张图片
所以你要创建的文件是在$GOPATH(我这里是E:\LearnFile\GO)\src文件下

项目结构

Go语言包管理学习_第2张图片

  • 你只能有一个main包main函数

go文件内容

./hello/hello.go

  • 这是正常引入,不会报错,但是这个不是主文件
package hello

import "fmt"

func Hello(){ //一定要大写开头(大写开头相当于public Hello();小写开头相当于private hello())
	fmt.Println("hello")
}

./main/main.go

package main

import (
	"fmt"
	//$GOPATH/src后的hello包路径
	"VSCode/Test01/hello01/hello"
)

func main(){
	fmt.Println("你好,这是主文件")
	hello.Hello()
}

package 包名 is not in GOROOT

1、你的GOPATH如上图配置一样正确

  • 查看GOPATH
get env GOPATH
  • 设置打开GO111MODULE
go env -w GO111MODULE=on

打开时,你会发现它只找你的GOROOT(最好不要做更改,这是你的GO的安装路径),一般先是找你的GOROOT如果没有那就会找GOPATH,如果GOPATH没有才会报错
如果出现package 包名 is not in GOROOT 那就尝试关闭GO111MODULE

go env -w GO111MODULE=off

GO MOD笔记

go mod init 模块名(项目名)

在这里插入图片描述
这时你就要打开GO111MODULE

go env -w GO111MODULE=on

在这里插入图片描述

暴露一下我的俩个项目结构(不然看不懂)

Go语言包管理学习_第3张图片

hello02/hello.go

package hello02

import "fmt"

func Hello() {
	fmt.Println("hello go this is hello02/hello")
}

hello02/go.mod

module hello02

go 1.19

hello01/main/main.go

package main

import (
	"chentianyu.com/hello02"
	"fmt"
)

func main() {
	hello02.Hello()
	fmt.Println("你好,这是主文件")
}

hello01/go.mod

module hello01 //项目名称

go 1.19 //go版本

//require加入依赖
require (
    chentianyu.com/hello02 v0.0.0
)

replace (
	//替代的模块名 => 替代的原有的真实路径(注:都是在GOPATH路径下的文件,这个'../'是在GOPATH路径下的上一级目录)
    chentianyu.com/hello02 => ../hello02
)

注意

运行路径(go run 有main包的路径)是你的文件路径(E:\LearnFile\GO\src\VSCode\Test01\hello01)

Go语言包管理学习_第4张图片

go.mod引用当前项目文件

项目结构

Go语言包管理学习_第5张图片

hell01(项目名)/go.mod

module hello01

go 1.19

require (
    chentianyu.com/hello v0.0.0
    chentianyu.com/hello02 v0.0.0
)

replace (
    chentianyu.com/hello => ./
    chentianyu.com/hello02 => ../hello02
)

hello01(项目名)/main/main.go

package main

import (
	"chentianyu.com/hello"
	"fmt"
)

func main() {
	hello.Hello()
	fmt.Println("你好,这是主文件")
}

hello01(项目名)/hello.go

package hello

import "fmt"

func Hello(){ //一定要大写开头(大写开头相当于public Hello();小写开头相当于private hello())
	fmt.Println("hello")
}

你可能感兴趣的:(golang,golang,学习,开发语言)