当前位置: 首页 > news >正文

使用 goland 开发 golang 项目环境配置

方式1:使用 GOPATH 和 GOROOT


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

  • GOROOT:对应 go 的安装路径,例如:D:\go\bin
  • GOPATH:是我们的工作空间,保存 go 代码和第三方依赖包

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

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

  • GOROOT/src:Go标准库
  • GOPATH/src:应用自身代码和第三方依赖的代码

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

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

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

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

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

方式2:使用 go.mod


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

查看项目的 go 配置


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

D:\learing\goproject\src\gocode\testproject001\main>go envset GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\heliubei\AppData\Local\go-build
set GOENV=C:\Users\heliubei\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=D:\learing\goproject\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=D:\learing\goproject
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:\go\pkg\tool\windows_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:\Users\heliubei\AppData\Local\Temp\go-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功能。这种情况下可以分为两种情形:

  • 当前目录在GOPATH/src之外且该目录包含go.mod文件
  • 当前文件在包含go.mod文件的目录下面

go.mod 使用


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

D:\learing\goproject>go mod init goprojectgo: creating new go.mod: module goproject
go: to add module requirements and sums:go mod tidy

我的项目目录为:D:\learing\goproject

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

package mainimport ("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:\learing\goproject\src\gocode\testproject001\model

3)成功导入自定义包

http://www.lryc.cn/news/240917.html

相关文章:

  • Linux宝塔面板搭建Discuz论坛, 并内网穿透实现公网访问
  • [git] 忽略已经提交的文件或文件夹
  • 大模型增量预训练参数说明
  • 成为AI产品经理——模型评估概述
  • 内存屏障与JVM指令
  • 深入理解JVM 类加载机制
  • SpringCloud微服务 【实用篇】| Eureka注册中心、Ribbon负载均衡
  • SpringSecurity+JWT权限认证
  • Tomcat实现WebSocket即时通讯 Java实现WebSocket的两种方式
  • 安全框架springSecurity+Jwt+Vue-2(后端开发)
  • 6.1.webrc媒体协商
  • Android WebView中打开外部超链接无反应
  • JMeter集结点的使用场景以及如何使用?
  • 2023最新面试题
  • shell 脚本的函数和数组
  • 【RocketMq系列-02】RocketMq的架构解析和高性能设计
  • 【数据结构/C++】线性表_单链表的基本操作
  • flink1.13.6版本的应用程序(maven版)
  • 深度学习之四(循环神经网络Recurrent Neural Networks,RNNs)
  • 【论文精读】HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face
  • 安装gitlab
  • Nginx模块开发之http handler实现流量统计(1)
  • JSP编写自己的第一个WebServlet实现客户端与服务端交互
  • 三、Keil安装芯片包、下载固件库、建立STM32工程模板
  • 微信相框M1-03花屏抢救照片数据
  • 小程序可拖拽按钮
  • ARM裸机-19(NandFlash和iNand)
  • 机器学习/sklearn笔记:MeanShift
  • opencv-简单图像处理
  • Linux(Kali\Ubuntu\CentOS\arm-Linux)安装Powershell