iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > GO >golang中GOPATH GOROOT的作用是什么
  • 229
分享到

golang中GOPATH GOROOT的作用是什么

2023-06-14 22:06:10 229人浏览 泡泡鱼
摘要

这期内容当中小编将会给大家带来有关golang中GoPATH GOROOT的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。golang适合做什么golang可以做服务器端开发,但golang很适

这期内容当中小编将会给大家带来有关golangGoPATH GOROOT的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

golang适合做什么

golang可以做服务器开发,但golang很适合做日志处理、数据打包、虚拟机处理、数据库代理等工作。在网络编程方面,它还广泛应用于WEB应用、api应用等领域。

GOPATH 和 GOROOT

不同于其他语言,go中没有项目的说法,只有包, 其中有两个重要的路径,GOROOT 和 GOPATH GOROOT是安装目录,GOPATH是我们的工作空间, 用来存放包的目录

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

修改 GOPATH 和 GOROOT

安装的时候如果没有更改设置,默认的GOROOT是在 C:\Go中,而 GOPATH会是在 C:\users\youName\go,

如果我们更改了go的安装位置,那么可以需要设置一下GOROOT 环境变量了

打开环境变量设置,查看下面的系统变量,如果有 GOROOT这个选项的话,查看是否需要更改,没有的话,新建一个就可以了,如图:

golang中GOPATH GOROOT的作用是什么

同理,如果我们想在加一个工作空间的话,直接更改 GOPATH就可以了, go安装的时候会在上面的用户变量中添加GOPATH, 如果没有的话像上一步一样新建就可以了,多个目录使用 ; 分号隔开

golang中GOPATH GOROOT的作用是什么

不管是可执行包,还是非可执行包,通通都应该在某个 $GOPATH/src下。如果你这样做了,那么就不会出现本地包这种写法了

import "./path/package"

比如你可以把你的可执行(项目)包,安放在某个 $GOPATH/src下,例如 $GOPATH/src/app/youpackagedir

这样本地包的import就变成

import "app/yourpackagedir/subpackage"

这样有什么用呢?

可以使用 go install 你的子包,有利于go build的时间,如果子包较大,那就更明显了

go code的自动完成可以用了

修改完以后需要重启 命令行工具, cmd/powershell/gitbash/Other,不重启不会生效的

补充:Go项目的环境变量GOROOT和GOPATH的设置-那些踩过的坑

那些遇到过的问题

不知道集美们在初次运行go项目的时候会不会遇到一些奇奇怪怪的问题,反正我是遇到了(我自己太菜了)。解决这些问题经常要花半天、一天的时间,甚至是好几个月(其实是被我抛到脑后了,但是迟早要解决)。我就开始陆陆续续把问题及其解决方法整理出来,形成了该篇文章。

import "github.com/xx/xx"出问题?

can't resolve the diectory

需要go get GitHub.com\xx\xx,将包从github上下载下来,自动放在gopath设置的路径里面。

import"golang.org/xx/xx"出问题?

使用go get golang,org/xx/xx方法不能下下来。golang组织在github上建了一个镜像库。下载方法如下:

首先在gopath下创建好src/golang.org/x/目录。后面就是按照同样的方式进行下载了。比如golang.org/x/text,拉取该模块代码:

git clone https://github.com/golang/net.git

其他的子包下载:

$ git clone Https://github.com/golang/tour.git$ git clone https://github.com/golang/net.git$ git clone https://github.com/golang/blog.git$ git clone https://github.com/golang/sync.git$ git clone https://github.com/golang/tools.git$ git clone https://github.com/golang/lint.git

设置GOROOT和GOPATH

先设置系统环境变量

golang中GOPATH GOROOT的作用是什么

GOROOT应为go sdk的安装目录。GOPATH可以设定为自己想要的位置,以后go项目需要的依赖库都会存放在这个路径下面。

设置GOLAND中的GOROOT和GOPATH

GOROOT为go sdk的安装目录

golang中GOPATH GOROOT的作用是什么

GOPATH不用改变,自动为系统变量。

golang中GOPATH GOROOT的作用是什么

Go Modules(vgo)enable选项注意取消勾选或者勾选

golang中GOPATH GOROOT的作用是什么

用命令行编译,运行go项目,包含好几个go文件

go项目文件列表如下

golang中GOPATH GOROOT的作用是什么

进入go项目的目录,并运行go build,生成exe文件,结果如下

golang中GOPATH GOROOT的作用是什么

golang中GOPATH GOROOT的作用是什么

最后运行可执行文件即可

golang中GOPATH GOROOT的作用是什么

运行内部包含多个 包的go项目

前面介绍了如何在命令行使用go命令编译和运行包含多个go文件的项目。但是实际中的项目里面往往是有多个包组成,即有一定的层级结构,划分不同的功能(我是这么理解的),有的用于配置Config包,有的用于数据模型生成data,有的用于服务service。直接用go build在项目根目录是不好使的,出错。项目的运行往往需要很多包,包括内部和外部的。这里就可以用到go mod,管理项目依赖包,很好使。

介绍go module及区分go get

go get: 若是GOPATH设置的工程目录,代码在src目录下,然后在命令提示符中输入:go get github.com/astaxie/beego,这样就在src目录下生成了github.com/astaxie/beego包。注意:在使用GoLand工具时,配置settings->Go->GOPATH->Project GOPATH为当前工程目录

值得一提的是,若是想要在其他位置新建go项目,就不得不更改系统变量GOPATH,将其设为新项目的位置,可能还要改goland中的GOPATH设置。比较麻烦。外部依赖包都存放在同一个位置,没有项目私有的外部依赖包存放位置,不便于移植项目到连不上互联网的电脑上。

go mod是golang1.11后引入的package依赖管理工具,用于解决之前没有地方记录依赖包具体版本的问题,方便依赖包管理。之前主要是用GOPATH 和 Vendor,vendor相对主流,但现在官方更提倡go mod。[3]

go module(mod):Go 的 1.11版本以上才能使用Go Module,1.13版本以下Go Module默认关闭,首先需要设置环境变量

go env -w GOPROXY=https://goproxy.io,direct go env -w GO111MODULE=on set GO111MODULE=on

在GOPATH的目录下,新建项目文件夹,进入新建路径执行go mod init,在文件夹下生成go.mod文件,然后将需要引入外部包的go文件置于项目目录下,编译文件,就会把外部包下载到本地的GOPATH/pkg/mod目录下。

set GO111MODULE=off,GOPATH mode,查找vendor和GOPATH目录。

set GO111MODULE=auto,如果当前目录不在$GOPATH 并且 当前目录(或者父目录)下有go.mod文件,则使用 GO111MODULE, 否则仍旧使用 GOPATH mode。

注意:在使用GoLand工具时,不要配置Project GOPATH为当前工程目录,最好不要配置Project GOPATH,而是配置Module GOPATH [2] 在使用模块的时候, GOPATH 是无意义的,不过它还是会把下载的依赖储存在 GOPATH/src/mod 中,也会把 go install 的结果放在 GOPATH/bin(如果 GOBIN 不存在的话)

相关命令[3]

指定module根目录并生成go.mod文件

go mod init example.com/hello

下载并添加依赖到go.mod文件中

go build src/servicego test src/sevice

查看module下的所有依赖

go list -m all

更新稳定版依赖

go get rsc.io/sampler

更新为指定版本依赖

go list -m -versions rsc.io/sampler rsc.io/sampler v1.0.0 v1.2.0 v1.2.1 v1.3.0 v1.3.1 v1.99.99 go get rsc.io/sampler@v1.3.1

清理无用的依赖

go mod tidy

将依赖复制到项目路径的vendor文件夹中

go mod vendor

忽略cache里的包,只使用vendor目录里的依赖进行编译

go build -mod=vendor

校验依赖并查看是否有修改

go mod verify

GoLand go module 配置

使用go module,依赖包存放于GOPATH下

优先级:global path < project path < module path

勾选enable module选项

golang中GOPATH GOROOT的作用是什么

保持不变

golang中GOPATH GOROOT的作用是什么

使用vendor

注意要使用命令行,并勾选vendor

golang中GOPATH GOROOT的作用是什么

type *http.Server has no field or method ProxyRemoteAddr

是下载好依赖后,编译时老是出现上诉问题,说外部依赖包里面有相关变量或方法没定义。明明是网上下载的依赖包,自己又没有修改,怎么会出现编译通不过的问题?

对于https://github.com/csby/wsf来说就是这样,出现问题

后面发现在它的readme.md文件中已经有说明:

golang中GOPATH GOROOT的作用是什么

提示我们对源代码作出以下修改。

按照它的提示修改后,编译通过。go项目成功跑起来。

发现这些花了我一天多的时间。

命令行运行项目

项目结构

srv(config()、data()、 enum()、 handler()、 service()、go.mod)

为项目添加go.mod文件

go mod init srv

往go.mod里面添加各个组件的依赖包

go build srv/configgo build srv/datago build srv/enumgo build srv/service
go run srv/servive

上述就是小编为大家分享的golang中GOPATH GOROOT的作用是什么了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网GO频道。

您可能感兴趣的文档:

--结束END--

本文标题: golang中GOPATH GOROOT的作用是什么

本文链接: https://www.lsjlt.com/news/275707.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • golang中GOPATH GOROOT的作用是什么
    这期内容当中小编将会给大家带来有关golang中GOPATH GOROOT的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。golang适合做什么golang可以做服务器端开发,但golang很适...
    99+
    2023-06-14
  • Golang中的GoPath和GoModule是什么
    这篇文章将为大家详细讲解有关Golang中的GoPath和GoModule是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。GoModule无法下载国外的依赖包问题在Golang中,有两个概念非常容易弄...
    99+
    2023-06-29
  • 详解Golang中什么是GOPATH?如何使用?
    在Golang开发中,GOPATH是非常重要的一个环境变量,它用于指定Golang编译器的工作区间。在编写代码时,我们的代码必须在GOPATH下才能被编译和运行。本文将详细介绍如何设置和配置GOPATH,以及如何在日常开发中充分利用GOPA...
    99+
    2023-05-14
    GOPATH Golang go语言
  • golang中怎么使用gopath
    小编给大家分享一下golang中怎么使用gopath,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!golang gopath的新用法从使用golang开发项目以来...
    99+
    2023-06-14
  • Go语言GOPATH的概念是什么
    这篇“Go语言GOPATH的概念是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Go语言GOPATH的概念是什么”文章吧...
    99+
    2023-07-05
  • golang reflect的作用是什么
    Golang中的reflect包提供了一种在运行时检查类型和操作值的方法。它的作用包括: 检查和获取变量的类型信息:通过refl...
    99+
    2024-02-29
    golang
  • golang interface的作用是什么
    Go语言中的接口(interface)是一种抽象类型,它定义了一组方法的集合。接口定义了对象的行为和功能,而不关心对象的具体实现。 ...
    99+
    2023-10-20
    golang
  • golang中rand.Seed(time.Now().UnixNano())的作用是什么
    本篇内容介绍了“golang中rand.Seed(time.Now().UnixNano())的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2023-07-05
  • golang中iris框架的作用是什么
    iris框架是一个轻量级的、高性能的Go语言Web框架,用于构建Web应用程序和API。它提供了许多强大的特性,如路由、中间件、模板...
    99+
    2024-04-03
    golang iris
  • golang rest参数的作用是什么
    在Go语言中,rest参数的作用是接收可变数量的参数。它是一种特殊的函数参数,可以接收任意数量的同类型参数。 rest参数使用三个点...
    99+
    2023-10-22
    golang
  • Golang中的替换操作方法是什么
    本篇内容介绍了“Golang中的替换操作方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Golang的字符串动态变量Golang 的...
    99+
    2023-07-05
  • Golang函数的变量作用域是什么
    Golang函数的变量作用域是指函数内部变量的可见性和生命周期。根据变量在函数中的位置和作用域,可以将变量分为三种类型:局部变量、参数变量和返回值变量。详细介绍:1、局部变量,是在函数内部定义的变量,只能在该函数内部使用,它们的作用域仅限于...
    99+
    2023-12-22
    Golang 函数 变量作用域
  • golang闭包的概念及作用是什么
    闭包是指一个函数(匿名函数或者lambda函数)以及其相关的引用环境组合而成的实体。在Go语言中,闭包是一种特殊的匿名函数,它可以访...
    99+
    2024-02-29
    golang
  • golang中的bee是什么
    golang中的bee是指一个协助快速开发beego项目的工具,通过bee工具您可以很容易的进行beego项目的创建、热编译、开发、测试以及部署工作,安装完bee工具后,需要将“$GOPATH”添加到环境变量中。本教程操作环境:window...
    99+
    2023-07-10
  • python中 =的作用是什么
    本篇文章为大家展示了python中 =的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python有哪些常用库python常用的库:1.requesuts;2.scrapy;3.pillo...
    99+
    2023-06-14
  • python中“+=”的作用是什么
    本篇内容介绍了“python中“+=”的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在python中,“+=”是指“加赋值”运算...
    99+
    2023-07-04
  • python中%的作用是什么
    python中%的作用是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;...
    99+
    2023-06-14
  • python中 -=的作用是什么
    本篇文章为大家展示了python中 -=的作用是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、WEB前端开发,众多大型网...
    99+
    2023-06-14
  • jquery中$的作用是什么
    这篇文章主要介绍“jquery中$的作用是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“jquery中$的作用是什么”文章能帮助大家解决问题。作用有:1、作为jQuery包装器,利用选择器来选择...
    99+
    2023-07-05
  • python中的作用是什么
    这期内容当中小编将会给大家带来有关python中的作用是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。Python主要用来做什么Python主要应用于:1、Web开发;2、数据科学研究;3、网络爬虫;...
    99+
    2023-06-14
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作