精华内容
下载资源
问答
  • Gopath

    2020-12-28 18:51:05
    <div><p>I need some helping creating a Gopath. It is very confusing.</p><p>该提问来源于开源项目:unixpickle/kahoot-hack</p></div>
  • GOPATH

    2021-05-25 18:30:57
    GOPATH的基本概念 在go语言中GOPATH的变量如果不设置会被默认设置为$HOME/go 我们可以通过命令查看go的环境变量 go env 因此查看GOPATH,就为 go env |grep GOPATH 如果使用GOPATH的工程结构,需要检查是否关闭了...

    GOPATH的基本概念

    在go语言中GOPATH的变量如果不设置会被默认设置为$HOME/go

    我们可以通过命令查看go的环境变量

    go env
    

    因此查看GOPATH,就为

    go env |grep GOPATH
    

    如果使用GOPATH的工程结构,需要检查是否关闭了go module,否则go在编译的时候会忽略$GOPATH文件夹。

    通过命令查看go module 是否关闭

    go env |grep GO111MODULE
    

    为off就说明没有开启go module

    设置GOPATH

    我们在使用GOPATH的工程结构时,都要对不同的项目设置GOPATH,因此到工程src所在目录执行:

    export GOPATH=`pwd`
    

    使用反引号` 将 pwd 指令括起来表示命令行替换,也就是说,使用`pwd`将获得 pwd 返回的当前目录的值

    假设我们已经使用

    mkdir -p src/hello
    

    创建了一个项目,且src位于$GOPATH目录之下,并且在hello目录下已存在一个main.go文件,那么可以直接使用命令来生成可执行文件,并且可执行文件会存放到$GOPATH/bin目录下

    go install hello
    

    之后直接运行可执行文件即可。

    在多项目工程中使用GOPATH的问题

    可能开发人员会忘记执行

    export GOPATH=`pwd`
    

    来修改GOPATH的路径。因此全局 GOPATH的方法可能会导致当前项目错误引用了其他目录的 Go 源码文件从而造成编译输出错误的版本或编译报出一些无法理解的错误提示。

    建议无论是使用命令行或者使用集成开发环境编译 Go 源码时,GOPATH跟随项目设定。在 Jetbrains 公司的 GoLand 集成开发环境(IDE)中的 GOPATH 设置分为Global GOPATHProject GOPATH

    • Global GOPATH代表全局 GOPATH,一般来源于系统环境变量。
    • Project GOPATH代表项目所使用的 GOPATH,在创建项目的时候设置,会被保存到.idea目录中,不会被设置到环境变量的 GOPATH 中,但会在编译时使用到这个目录,建议在开发时只填写项目 GOPATH,每一个项目尽量只设置一个 GOPATH。

    编译运行GOPATH项目脚本

    上面说了在多项目工程中,忘记修改GOPTH可能会引发错误引用其他目录的Go源码文件。一般可以通过以下脚本来编译项目,避免忘记修改GOPATH

    编译/运行脚本
    #!/usr/bin/env bash
    
    CURRENT_DIR=`pwd`
    OLD_GO_PATH="$GOPATH"  #例如: /usr/local/go
    # 修改GOPATH为当前路径
    export GOPATH="$CURRENT_DIR" 
    # 创建GOBIN
    GOBIN="$GOPATH/bin"
    
    # 规范化源码格式
    gofmt -w src
    
    # 编译安装项目
    go install $1
    # 运行脚本
    $GOBIN/$1
    
    # 恢复
    export GOPATH="$OLD_GO_PATH"
    

    GO目前有更好的包管理方式:go mod

    使用go mod首先需要做的是设置export GO111MODULE=on

    go env -w GO111MODULE=on
    # go v1.13之后需要额外配置
    export GOPROXY=https://goproxy.cn,direct
    export GOSUMDB=off
    

    开启了GOMODULE模式后,go语言编译的时候就会忽略原来的GOPATH路径,只根据go.mod文件对项目进行编译。

    一般直接创建一个目录,然后直接初始化项目即可

    mkdir /hello
    cd hello
    go mod init hello
    

    会生成在../hello/路径下生成一个go.mod文件

    module hello
    
    go 1.16
    

    更多命令可以参考

    展开全文
  • gopath_了解GOPATH

    2020-08-12 18:08:27
    gopath 介绍 (Introduction) This article will walk you through understanding what the GOPATH is, how it works, and how to set it up. This is a crucial step for setting up a Go development environment, ...

    gopath

    介绍 (Introduction)

    This article will walk you through understanding what the GOPATH is, how it works, and how to set it up. This is a crucial step for setting up a Go development environment, as well as understanding how Go finds, installs, and builds source files. In this article we will use GOPATH when referring to the concept of the folder structure we will be discussing. We will use $GOPATH to refer to the environment variable that Go uses to find the folder structure.

    本文将GOPATH您了解什么是GOPATH ,它如何工作以及如何进行设置。 这是设置Go开发环境以及了解Go如何查找,安装和构建源文件的关键步骤。 在本文中,当我们将要讨论的文件夹结构的概念时,我们将使用GOPATH 。 我们将使用$GOPATH引用Go用来查找文件夹结构的环境变量。

    A Go Workspace is how Go manages our source files, compiled binaries, and cached objects used for faster compilation later. It is typical, and also advised, to have only one Go Workspace, though it is possible to have multiple spaces. The GOPATH acts as the root folder of a workspace.

    Go工作区是Go管理我们的源文件,已编译二进制文件和用于以后更快编译的缓存对象的方式。 尽管可能有多个空间,但通常也建议只有一个Go工作空间。 GOPATH充当工作空间的根文件夹。

    设置$GOPATH环境变量 (Setting the $GOPATH Environment Variable)

    The $GOPATH environment variable lists places for Go to look for Go Workspaces.

    $GOPATH环境变量列出了Go查找Go Workspaces的位置。

    By default, Go assumes our GOPATH location is at $HOME/go, where $HOME is the root directory of our user account on our computer. We can change this by setting the $GOPATH environment variable. For further study, follow this tutorial on reading and setting environment variables in Linux.

    默认情况下,Go假定我们的GOPATH位置为$HOME/go ,其中$HOME是计算机上用户帐户的根目录。 我们可以通过设置$GOPATH环境变量来更改它。 要进一步研究,请遵循本教程,以了解如何在Linux中阅读和设置环境变量

    For more information on setting the $GOPATH variable, see the Go documentation.

    有关设置$GOPATH变量的更多信息,请参见Go 文档

    Furthermore, this series walks through installing Go and setting up a Go development environment.

    此外,本系列文章还将介绍如何安装Go并设置Go开发环境。

    $GOPATH不是$GOROOT ($GOPATH Is Not $GOROOT)

    The $GOROOT is where Go’s code, compiler, and tooling lives — this is not our source code. The $GOROOT is usually something like /usr/local/go. Our $GOPATH is usually something like $HOME/go.

    $GOROOT是Go的代码,编译器和工具的存放地-这不是我们的源代码。 $GOROOT通常类似于/usr/local/go 。 我们的$GOPATH通常类似于$HOME/go

    While we don’t need to specifically set up the $GOROOT variable anymore, it is still referenced in older materials.

    尽管我们不再需要专门设置$GOROOT变量,但是在较旧的资料中仍然引用了它。

    Now, let’s discuss the structure of the Go Workspace.

    现在,让我们讨论Go Workspace的结构。

    Go工作区剖析 (Anatomy of the Go Workspace)

    Inside of a Go Workspace, or GOPATH, there are three directories: bin, pkg, and src. Each of these directories has special meaning to the Go tool chain.

    在Go Workspace或GOPATH ,有三个目录: binpkgsrc 。 这些目录中的每一个对于Go工具链都有特殊的含义。

    .
    ├── bin
    ├── pkg
    └── src
      └── github.com/foo/bar
        └── bar.go

    Let’s take a look at each of these directories.

    让我们看一下每个目录。

    The $GOPATH/bin directory is where Go places binaries that go install compiles. Our operating system uses the $PATH environment variable to find binary applications that can execute without a full path. It is recommended to add this directory to our global $PATH variable.

    $GOPATH/bin目录是Go放置go install编译二进制文件的位置。 我们的操作系统使用$PATH环境变量查找无需完整路径即可执行的二进制应用程序。 建议将此目录添加到我们的全局$PATH变量中。

    For example, if we don’t add $GOPATH/bin to $PATH to execute a program from there, we would need to run:

    例如,如果我们不将$GOPATH/bin添加到$PATH以从那里执行程序,则需要运行:

    • $GOPATH/bin/myapp

      $ GOPATH / bin / myapp

    When $GOPATH/bin is added to $PATH we can make the same call like such:

    $GOPATH/bin添加到$PATH我们可以像这样进行相同的调用:

    • myapp

      myapp

    The $GOPATH/pkg directory is where Go stores pre-compiled object files to speed up subsequent compiling of programs. Typically, most developers won’t need to access this directory. If you experience issues with compilation, you can safely delete this directory and Go will then rebuild it.

    $GOPATH/pkg目录是Go存放预编译目标文件的目录,以加快程序的后续编译速度。 通常,大多数开发人员不需要访问该目录。 如果您遇到编译问题,则可以安全地删除此目录,然后Go会重新构建它。

    The src directory is where all of our .go files, or source code, must be located. This shouldn’t be confused with the source code the Go tooling uses, which is located at the $GOROOT. As we write Go applications, packages, and libraries, we will place these files under $GOPATH/src/path/to/code.

    src目录是我们所有.go文件或源代码所在的位置。 这不应与Go工具使用的源代码(位于$GOROOT处) $GOROOT 。 在编写Go应用程序,程序包和库时,我们会将这些文件放在$GOPATH/src/path/to/code

    什么是包裹? (What Are Packages?)

    Go code is organized in packages. A package represents all the files in a single directory on disk. One directory can contain only certain files from the same package. Packages are stored, with all user-written Go source files, under the $GOPATH/src directory. We can understand package resolution by importing different packages.

    Go代码以包的形式组织。 包代表磁盘上单个目录中的所有文件。 一个目录只能包含同一软件包中的某些文件。 软件包和所有用户编写的Go源文件一起存储在$GOPATH/src目录下。 我们可以通过导入不同的软件包来了解软件包的解析。

    If our code lives at $GOPATH/src/blue/red then its package name should be red.

    如果我们的代码位于$GOPATH/src/blue/red则其包名称应为red

    The import statement for the red package would be:

    red软件包的导入语句为:

    import "blue/red"

    Packages that live in source code repositories, like GitHub and BitBucket, have the full location of the repository as part of their import path.

    驻留在诸如GitHub和BitBucket之类的源代码存储库中的软件包将存储库的完整位置作为其导入路径的一部分。

    For example, we would import the source code at https://github.com/gobuffalo/buffalo using the following import path:

    例如,我们将使用以下导入路径在https://github.com/gobuffalo/buffalo处导入源代码:

    import "github.com/gobuffalo/buffalo"

    Therefore, this source code would be in the following location on disk:

    因此,此源代码将位于磁盘上的以下位置:

    $GOPATH/src/github.com/gobuffalo/buffalo

    结论 (Conclusion)

    In this article we discussed the GOPATH as a set of folder’s that Go expects our source code to live within, as well as what those folders are, and what they contain. We discussed how to change that location from the default of $HOME/go to the user’s choice by setting the $GOPATH environment variable. Finally, we discussed how Go searches for packages within that folder structure.

    在本文中,我们讨论了GOPATH ,它是Go希望其源代码GOPATH在其中的一组文件夹,以及这些文件夹及其所包含的内容。 我们讨论了如何通过设置$GOPATH环境变量将该位置从默认$HOME/go更改为用户的选择。 最后,我们讨论了Go如何在该文件夹结构内搜索软件包。

    Introduced in Go 1.11, Go Modules aim to replace Go Workspaces and the GOPATH. While it is recommended to start using modules, some environments, such as corporate environments, may not be ready to use modules.

    在Go 1.11中引入的Go模块旨在替代Go Workspaces和GOPATH 。 建议开始使用模块时,某些环境(例如公司环境)可能尚未准备好使用模块。

    The GOPATH is one of the trickier aspects of setting up Go, but once it is set up, we can usually forget about it.

    GOPATH是设置Go的棘手方面之一,但是一旦设置好,我们通常会忘记它。

    翻译自: https://www.digitalocean.com/community/tutorials/understanding-the-gopath

    gopath

    展开全文
  • 详解GOPATH

    2018-11-16 11:09:16
    GOPATH 作用 存放SDK以外的第三方类库 可以是下载的第三方类库 也可以是自己收藏的可复用代码 目录结构 GOPATH目录可以指定多个 每一个GOPATH目录下必须有一个src目录 src目录下的文件夹名称就是引用时的...
    File->Settings->Go->GOPATH
    

    作用

    • 存放SDK以外的第三方类库

    • 可以是下载的第三方类库

    • 也可以是自己收藏的可复用代码

    目录结构

    • GOPATH目录可以指定多个
    • 每一个GOPATH目录下必须有一个src目录
    • src目录下的文件夹名称就是引用时的包名

    举例

        import fuck.shit
        shit.EatSome(5)
    

    上述实例成功运行的前提
    GOPATH目录之一下存在路径:src/fuck/shit/
    shit目录下的某个go源文件中有函数定义:func EatSome(kg int)
    全局GOPATH

    • 所有工程可用
    • 全局GOPATH目录也可以以GOPATH环境变量的方式配置

    工程GOPATH

    [清华团队带你实战区块链开发]
    (https://ke.qq.com/course/344443?tuin=3d17195d)
    扫码获取海量视频及源码 QQ群:721929980

    在这里插入图片描述

    展开全文
  • GOPATH设置

    2019-11-07 00:15:40
    GOPATH设置 go help gopath查看gopath的原文帮助信息 go env查看gopath的配置 golang 第一天环境搭建|Goland https://blog.csdn.net/xh21bao/article/details/66475922 G...

    https://www.cnblogs.com/shengulong/p/9143592.html

    GOPATH设置

    go help gopath查看gopath的原文帮助信息

    go env查看gopath的配置

     

    golang 第一天环境搭建|Goland

    https://blog.csdn.net/xh21bao/article/details/66475922

     

     

    GOPATH与工作空间

    前面我们在安装Go的时候看到需要设置GOPATH变量,Go从1.1版本到1.7必须设置这个变量,而且不能和Go的安装目录一样,这个目录用来存放Go源码,Go的可运行文件,以及相应的编译之后的包文件。所以这个目录下面有三个子目录:src、bin、pkg

    从go 1.8开始,GOPATH环境变量现在有一个默认值,如果它没有被设置。 它在Unix上默认为$HOME/go,在Windows上默认为%USERPROFILE%/go。

     

    go get -u -v github.com/kardianos/govendor下载的govendor工具会自动放到GOPATH的目录下,执行的命令:$GOPATH/bin/govendor

     

    把gopath/bin加入到环境变量path里,以方便执行bin下面的可执行文件

    https://github.com/astaxie/build-web-application-with-golang/blob/master/zh/01.2.md

    展开全文
  • 1.3 详解GOPATH

    2018-09-13 00:00:11
    1.3 详解GOPATH
  • export GOPATH=~/gopath git clone ... travis-ci/travis-ci mkdir $GOPATH/src/github.com/travis-ci/travis-ci cp -r $TRAVIS_BUILD_DIR/ $GOPATH/src/github.com/travis-ci/travis-ci export TRAVIS_BUILD_...
  • $GOPATH:$GS_GOPATH:$GS_GOPATH/vendor" } } </code></pre> <p><code>env GOPATH GS_GOPATH</code> output: <pre><code> { "GOPATH": "C:\\go:C:\\work\\project:C:\\work\\project/vendor",...
  • override $GOPATH

    2020-12-08 21:46:54
    <div><p>I need to use all the system variables but not $GOPATH and I want to add my source directory to my custom GOPATH as well. <p>So I did this <pre><code> <useenvvars>true</useenvvars>...
  • Removed GOPATH check

    2020-12-25 23:06:00
    <div><p>Not all Makefile targets need <code>GOPATH</code> to be set. Makefile targets like <code>demo</code> and <code>demo-v2plugin</code> do not need <code>GOPATH</code> to be set in order to sync ...
  • Shell with GOPATH

    2020-12-09 12:30:24
    <div><p>This patch updates the Makefile to use a custom shell based on <code>hack/shell-with-gopath.sh</code> to ensure that even when building outside the GOPATH, K8s tooling will still work. ...
  • <p>But when I add a second entry to the <code>GOPATH</code> for windows as below... <pre><code> json { "folders": [ { "path": "C:\\Users\\jason\\workspace1" }, { "...
  • Linux设置gopath

    2021-01-21 15:21:42
    vim /etc/profile #编辑gopath,写入如下 export GOROOT=/usr/local/go #设置为go安装的路径,有些安装包会自动设置默认的goroot export GOPATH=$HOME/gocode #默认安装包的路径 可以加自己想要的路径,用:分割 ...
  • golang GOPATH 开发包

    2020-07-24 16:56:25
    golang 开发GOPATH下应用包,包括:github、golang.org、google.golang.org 其中github包括:chzyer、go-delve、golang、google、inconshreveable、spf13、yuin。 golang.org 包括 x下的:build、crypto、mobile、...
  • gopath.rhl7.tgz

    2021-05-18 09:59:44
    gopath.rhl7.tgz
  • Handle unset GOPATH

    2020-12-27 21:04:39
    <div><p>Even though Go itself defaults to ~/go</code> when <code>GOPATH</code> is not set, some of the dependencies do not use the same default. This change helps by providing a default in the ...
  • Instructions on GOPATH

    2021-01-11 19:22:31
    <p>IntelliJ gives me issues with the GOPATH on windows, but there seems to be no instructions on how to fix this in the guidelines, could the guidelines for windows uses please be appended?</p><p>该...
  • 关于GOPATH

    2016-07-08 00:13:40
    GOPATH环境变量用于指定这样一些目录: 除$GOROOT之外的包含Go项目源代码和二进制文件的目录。go install和go 工具会用到GOPATH:作为编译后二进制的存放目的地和import包时的搜索路径GOPATH是一个路径列表,也就是...
  • Golang GOPATH问题

    2021-01-20 17:36:54
    在环境变量中配置好了GOPATH,却没有生效 go安装好之后,GOPATH一直都没有生效,很是郁闷,就用 go env 命令在cmd中,查看一些信息 配置的GOROOT生效了,但是,GOPATH跟在环境变量中配置的不同 打开环境变量进行...
  • $GOPATH理解

    2021-04-06 15:04:28
    GOPATH 是 Go语言中使用的一个环境变量,默认使用绝对路径提供项目的工作目录。 当我们在工程中使用大量的源码、包等非本地代码时,就需要这样一个目录来整合环境。 gopath查看 1、命令行执行:go env 2、ide上查看...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,089
精华内容 4,835
关键字:

gopath