本文介绍: GO111MODULE 有三个值:offonauto,具体介绍如下:1)GO111MODULE=offgo命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式查找。2)GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录查找。3)GO111MODULE=auto默认值go命令行将会根据当前目录来决定是否启用module功能当前目录在GOPATH/src之外且该目录包含go.mod文件

方式1:使用 GOPATH 和 GOROOT


goland打开:Settings – Go,会看到 GOROOT、GOPATH,其相关解释配置如下

GOPATH可以设置多个,其中,第一个将会是默认的包目录使用 go get 下载的包都会在第一个 path 中的 src 目录下,使用 go install 时,在哪个GOPATH中找到了这个包,就会在哪个GOPATH下的bin目录生成可执行文件

使用GOPATH时,Go会在以下为目录中搜索包:

引入包时,路径src 的下一级文件地址开始写,编译器自动src 下开始引入如下

// 自定义包的绝对路径为:D:learinggoprojectsrcgocodetestproject001model
import (
    "fmt"
    "gocode/testproject001/model"
)

使用方式一导入自定义包时,报错如下

main.go:5:2: package gocode/testproject001/model is not in std (D:gosrcgocodetestproject001model)

注意:该方式易出错,不建议使用

方式2:使用 go.mod


从 Go1.11 版本之后,已经不再推荐使用 GOPATH ,而是使用 GOMODULE 来管理程序文件

查看项目的 go 配置


首先在终端进入项目目录,执行 go env 查看 go 的相关配置,具体如下:

D:learinggoprojectsrcgocodetestproject001main>go env

set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:UsersheliubeiAppDataLocalgo-build
set GOENV=C:UsersheliubeiAppDataRoaminggoenv
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:learinggoprojectpkgmod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:learinggoproject
set GOPRIVATE=
set GOPROXY=https://goproxy.io,direc
set GOROOT=D:go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLCHAIN=auto
set GOTOOLDIR=D:gopkgtoolwindows_amd64
set GOVCS=
set GOVERSION=go1.21.3
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set GOWORK=
set CGO_CFLAGS=-O2 -g
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-O2 -g
set CGO_FFLAGS=-O2 -g
set CGO_LDFLAGS=-O2 -g
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -Wl,--no-gc-sections -fmessage-length=0 -ffile-prefix-map=C:UsersheliubeiAppDataLocalTempgo-build3874952850=/tmp/go-build -gno-record-gcc-switches

如果 GO111MODULE = off 可通过如下命令进行修改,以确保 GO111MODULE = on

go env -w GO111MODULE = on

GO111MODULE 介绍


GO111MODULE 有三个值:off、on 和 auto,具体介绍如下:

1)GO111MODULE=off,go命令行将不会支持module功能,寻找依赖包的方式将会沿用旧版本那种通过vendor目录或者GOPATH模式查找

2)GO111MODULE=on,go命令行会使用modules,而一点也不会去GOPATH目录下查找

3)GO111MODULE=auto,默认值,go命令行将会根据当前目录来决定是否启用module功能。这种情况下可以分为两种情形:

go.mod 使用


1)进入项目路径下执行 go mod init + 模块名 命令,在项目文件创建一个 go.mod 文件,具体如下:

D:learinggoproject>go mod init goproject

go: creating new go.mod: module goproject
go: to add module requirements and sums:
        go mod tidy

我的项目目录为:D:learinggoproject

2)引入自定义包时,路径应从 go.mod 所在的路径下写起

package main

import (
    "fmt"
    "goproject/src/gocode/testproject001/model"
)

func main() {
    //创建person结构示例:
    p := model.NewPerson("丽丽")
    p.SetAge(20)
    fmt.Println(p.Name)
    fmt.Println(p.GetAge())
    fmt.Println(*p)
}

自定义包的绝对路径为:D:learinggoprojectsrcgocodetestproject001model

3)成功导入自定义

原文地址:https://blog.csdn.net/weixin_47156401/article/details/134564505

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_33380.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注