精华内容
参与话题
问答
  • Go语言的GOPATH与工作目录详解

    万次阅读 2018-01-04 12:15:53
    GOPATH设置 go 命令依赖一个重要的环境变量:$GOPATH1 (注:这个不是Go安装目录。下面以笔者的工作目录为说明,请替换自己机器上的工作目录。) 在类似 Unix 环境大概这样设置: 复制代码代码如下:...

    转自:http://www.jb51.net/article/56779.htm

    GOPATH设置

    go 命令依赖一个重要的环境变量:$GOPATH1

    (注:这个不是Go安装目录。下面以笔者的工作目录为说明,请替换自己机器上的工作目录。)

    在类似 Unix 环境大概这样设置:

    复制代码代码如下:

        export GOPATH=/home/apple/mygo

    为了方便,应该把新建以上文件夹,并且把以上一行加入到 .bashrc 或者 .zshrc 或者自己的 sh 的配置文件中。

    Windows 设置如下,新建一个环境变量名称叫做GOPATH:

    复制代码代码如下:

        GOPATH=c:\mygo

    GOPATH允许多个目录,当有多个目录时,请注意分隔符,多个目录的时候Windows是分号,Linux系统是冒号,当有多个GOPATH时,默认会将go get的内容放在第一个目录下

    以上 $GOPATH 目录约定有三个子目录:

    1.src 存放源代码(比如:.go .c .h .s等)
    2.pkg 编译后生成的文件(比如:.a)
    3.bin 编译后生成的可执行文件(为了方便,可以把此目录加入到 $PATH 变量中,如果有多个gopath,那么使用${GOPATH//://bin:}/bin添加所有的bin目录)

    以后我所有的例子都是以mygo作为我的gopath目录

    应用目录结构

    建立包和目录:$GOPATH/src/mymath/sqrt.go(包名:"mymath")

    以后自己新建应用或者一个代码包都是在src目录下新建一个文件夹,文件夹名称一般是代码包名称,当然也允许多级目录,例如在src下面新建了目录$GOPATH/src/github.com/astaxie/beedb 那么这个包路径就是“github.com/astaxie/beedb”,包名称是最后一个目录beedb

    执行如下代码:

    复制代码代码如下:

    cd $GOPATH/src
        mkdir mymath

    新建文件sqrt.go,内容如下:

    复制代码代码如下:

     // $GOPATH/src/mymath/sqrt.go源码如下:
        package mymath

        func Sqrt(x float64) float64 {
            z := 0.0
            for i := 0; i < 1000; i++ {
                z -= (z*z - x) / (2 * x)
            }
            return z
        }

    这样我的应用包目录和代码已经新建完毕,注意:一般建议package的名称和目录名保持一致

    编译应用

    上面我们已经建立了自己的应用包,如何进行编译安装呢?有两种方式可以进行安装

    1、只要进入对应的应用包目录,然后执行go install,就可以安装了
    2、在任意的目录执行如下代码go install mymath

    安装完之后,我们可以进入如下目录:

    复制代码代码如下:

     cd $GOPATH/pkg/${GOOS}_${GOARCH}
        //可以看到如下文件
        mymath.a

    这个.a文件是应用包,那么我们如何进行调用呢?

    接下来我们新建一个应用程序来调用

    新建应用包mathapp:

    复制代码代码如下:

     cd $GOPATH/src
        mkdir mathapp
        cd mathapp
        vim main.go

    // $GOPATH/src/mathapp/main.go源码:

    复制代码代码如下:

        package main

        import (
              "mymath"
              "fmt"
        )

        func main() {
              fmt.Printf("Hello, world.  Sqrt(2) = %v\n", mymath.Sqrt(2))
        }

    如何编译程序呢?进入该应用目录,然后执行go build,那么在该目录下面会生成一个mathapp的可执行文件

    复制代码代码如下:

        ./mathapp

    输出如下内容

    复制代码代码如下:

        Hello, world.  Sqrt(2) = 1.414213562373095

    如何安装该应用,进入该目录执行go install,那么在$GOPATH/bin/下增加了一个可执行文件mathapp,这样可以在命令行输入如下命令就可以执行

    复制代码代码如下:

    mathapp

    也是输出如下内容

    复制代码代码如下:

    Hello, world.  Sqrt(2) = 1.414213562373095

    获取远程包

    go语言有一个获取远程包的工具就是go get,目前go get支持多数开源社区(例如:github、googlecode、bitbucket、Launchpad)

    复制代码代码如下:

    go get github.com/astaxie/beedb

    go get -u 参数可以自动更新包,而且当go get的时候会自动获取该包依赖的其他第三方包
    通过这个命令可以获取相应的源码,对应的开源平台采用不同的源码控制工具,例如github采用git、googlecode采用hg,所以要想获取这些源码,必须先安装相应的源码控制工具

    通过上面获取的代码在我们本地的源码相应的代码结构如下:

    复制代码代码如下:

    $GOPATH
      src
       |--github.com
              |-astaxie
                  |-beedb
       pkg
        |--相应平台
             |-github.com
                   |--astaxie
                        |beedb.a

    go get本质上可以理解为首先第一步是通过源码工具clone代码到src下面,然后执行go install

    在代码中如何使用远程包,很简单的就是和使用本地包一样,只要在开头import相应的路径就可以

    复制代码代码如下:

    import "github.com/astaxie/beedb"

    程序的整体结构

    通过上面建立的我本地的mygo的目录结构如下所示

    复制代码代码如下:

    bin/
        mathapp
    pkg/
        平台名/ 如:darwin_amd64、linux_amd64
             mymath.a
             github.com/
                  astaxie/
                       beedb.a
    src/
        mathapp
              main.go
          mymath/
              sqrt.go
          github.com/
               astaxie/
                    beedb/
                        beedb.go
                        util.go

    从上面的结构我们可以很清晰的看到,bin目录下面存的是编译之后可执行的文件,pkg下面存放的是函数包,src下面保存的是应用源代码。

    [1] Windows系统中环境变量的形式为%GOPATH%,本书主要使用Unix形式,Windows用户请自行替换。



    展开全文
  • 详解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_了解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

    展开全文
  • GO语言GOPATH的设置

    千次阅读 2018-12-18 20:02:52
    1、首先在你将要设置成GOPATH的文件夹下创建三个文件夹分别叫 bin src pkg 2、配置Go环境变量GOPATH和GOBIN  (1)打开终端,cd ~  (2)查看是否有.bash_profile文件:  ls -all  (3)...

    如果你装 beego 无法运行 bee version 那么多半又是 gobin 路径错误了,那么,就重新带着大家试试呗:

     

    1、首先在你将要设置成GOPATH的文件夹下创建三个文件夹分别叫 bin src pkg

    2、配置Go环境变量GOPATH和GOBIN

      (1)打开终端,cd ~

      (2)查看是否有.bash_profile文件:

          ls -all

      (3)有则跳过此步,没有则:

        1)创建:touch .bash_profile

        2)编辑:open -e .bash_profile

        3)自定义GOPATH和GOBIN位置:

    export GOPATH=/Users/hopkings/www/Go
    export GOBIN=$GOPATH/bin
    export PATH=$PATH:$GOBIN

      (4)编译:source .bash_profile

       *查看Go环境变量:go env

     

     

     

    展开全文
  • golang下的GOPATH路径问题

    千次阅读 2018-04-27 19:26:11
    我需要开发一个组建,所以代码结构没有src目录,并且项目放在GOPATH路径的src目录下 我在编译二进制文件的时候使用了下面的命令GOPATH=`pwd` GOBIN=`pwd` go install main.go 编译报错,提示import的类库找不到...
  • Go语言中的GOPATH解析

    2019-06-12 09:47:42
    在说GOPATH之前,先说说GO语言的项目结构: 1、Go语言中组织单元最大的为项目,项目下包含包。一个包可以有多个文件 2、包在物理层面上就是文件夹。同一个文件夹中多个文件的package必须相同,一般package和所在的...
  • Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易。 Go是从2007年末由Robert Griesemer, Rob Pike, Ken Thompson主持开发,后来还加入了Ian Lance Taylor, Russ Cox等人,并最终于2009年11月...
  • 【GO】详解GOROOT和GOPATH

    千次阅读 2020-03-09 23:48:54
    GOPATH 作用: 存放sdk以外的第三方类库 自己收藏的可复用的代码 目录结构:$GOPATH目录约定有三个子目录 3. src存放源代码(比如:.go .c .h .s等) 按照golang默认约定,go run,go install等命令的当前工作路径...
  • 快速弄明白 Go 语言 GOPATH 设置

    万次阅读 多人点赞 2018-05-18 10:02:41
    Go语言提供两个关键路径,GOROOT 指向系统安装路径,GOPATH指向工作路径。例如: GOROOT = C:\Go GOPATH = D:\MyWorks 其中,go语言源代码和编译的中间文件、目标文件存放位置如下: **C:\Go &amp;amp;...
  • GOROOT:为了方便计算机找到我们所安装的SDK,路径只写到 ...GOPATH:工作目录「创建项目时,指定的存放目录」,计算机会自动帮你定位到那 PATH:计算机寻找 SDK 所用到的目录结构,一般和 GOROOT 配合使用,也可以...
  • GOPATH

    2018-10-24 15:32:00
    目录 GOPATH 代码目录结构规划 GOPATH ...这个环境变量指定之后,我们编译源代码等生成的文件都会放到这个目录下,GOPATH环境变量的配置参考golang环境搭建,配置到/etc/profile或者Win...
  • Go开发中GOPATH的理解

    千次阅读 2018-07-05 14:10:19
    在学习go语言的过程当中, 你也许问过自己一个问题, GOPATH到底是做什么的? 或许在写过一些代码之后, 很快你就会在网上找到一些资料, 它告诉我们GOPATH这个环境变量它指定了一个目录, 这个目录包含了我们所有的源码, ...
  • <p>I have set the <code>GOPATH</code> for the project using the <code>go.gopath</code> setting in vscode, and this seems to work just fine for the most part. <p>However, when I open the integrated ...
  • gopath 的工具

    2016-08-06 17:37:13
    GOlang 的 工具集
  • <p>Running <code>echo $GOPATH</code> gives <code>/Users/userxyz/Desktop/Code</code></p> <p>Running <code>go env</code> gives <pre><code>..... GOPATH="/Users/userxyz/Desktop/Code" ... GOROOT="/...
  • GOPATH和GOROOT区别? GOPATH 需要配置多个吗? 问题1:GOPATH和GOROOT区别? 可以简单理解为: $GOPATH 是go的工程目录 TENCENT64: 14:31 ~/golearn/go_proj &gt; echo $GOPATH /data/home/user/golearn/go_...
  • 设置Golang的GOPATH

    万次阅读 2016-05-12 08:22:12
    Go是一门全新的静态类型开发语言,具有自动垃圾回收,丰富的内置类型,函数多返回值,错误处理,匿名函数,并发编程,反射等特性. Linux golang安装 golang下载 sudo tar -zvxf go1.6.2.linux-amd64.tar.gz ...
  • <p>I have this weird issue....<p>But when, I run <code>echo $GOPATH, I get an empty new line. This happens for all other GO environment values as well when I try to echo them out: ...
  • Gopath环境错误

    2017-06-13 21:26:06
    <pre><code>go: GOPATH entry is relative; must be absolute path: "/Users/efronlicht/go". For more details see: 'go help gopath' exit status 2 Process exiting with code: 1 </code></pre> <p>This is a VS...
  • Go GOPATH设置

    千次阅读 2018-07-03 14:51:55
    问题sudo go get github....package github.com/tsenart/vegeta: cannot download, $GOPATH not set. For more details see: go help gopath根源# ~/.bashrc ╭─xiaojia@xiaojia-Lenovo-G460 ~

空空如也

1 2 3 4 5 ... 20
收藏数 22,411
精华内容 8,964
关键字:

gopath