https://www.cnblogs.com/lpgit/p/13412529.html

GO学习–$GOBIN

一、windows下 Golang 安装

1、下载 go1.17.7.windows-arm64.zip

2、设置环境变量

官方文档:
If you chose a directory other than c:\Go, you must set the GOROOT environment variable to your chosen path.
Add the bin subdirectory of your Go root (for example, c:\Go\bin) to your PATH environment variable.

需要配置GOROOT、GOBIN和GOPATH三个环境变量。

GOBIN : go install 安装命令的目录
程序生成的可执行文件的路径。这里注意,你可以设置它,也可以不设置,默认是个空字符串,我猜测它会链接距离最短的$GOPATH下的./bin文件夹;这里多说一句,需要go install才会链接到GOBIN,go build之后你的可执行文件和你的main.go在同一目录下。

GOROOT : golang安装后的根目录,windows下默认为c:\go\,安装过程中会由安装程序自动写入系统环境变量中。

GOPATH : golang的工作目录,是用来设置包加载路径的重要变量,也是go get和go install工具将会使用的目录。GOPATH变量可以同时制定多个目录,这些目录在Mac和Linux系统上通过:分隔,而在windows系统上通过;分隔。在大部分情况下都将是第一个路径优先。

GOPATH 是一个环境变量, 用来表明你写的Go项目的存放路径.

注意: 不是安装目录, 是工作目录, 写代码的目录.

GOPATH 路径最好只设置一个, 所有的项目代码都放到GOPATH的src目录下.

注意: 在Go 1.11 版本之后, 开启 go mod 模式之后就不再强制需要配置GOPATH了.

在GOPATH目录下新建三个文件夹
bin: 用来存放编译后生成的可执行文件. pkg: 用来存放编译后生成的归档文件. src: 用来存放源码文件.

go get xxx获得的依赖中,源码在./src路径下,go build后依赖生成的.a格式的静态库文件就在./pkg路径下。还有个./bin文件夹构成了基本结构。

关于go的整体一个开发目录

二、进阶:

巩固学习最好的方法是通过go help看文档
GO语言规范文档

终端执行命令 go help environment
GOBIN
The directory where ‘go install’ will install a command.

2.1 查看go 环境

go env

阿里云 Go Module 国内镜像仓库服务
设置方法

go env -w GO111MODULE=on
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

go help modules

在没有 GO111MODULE时, go编译程序的查找依赖的顺序 go path > goroot , 有了GO111MODULE后,会读取当前项目的 go.mod 文件, 在 go.mod 文件中会记录有哪些依赖

Go Modules 是 Go 语言的一种依赖管理方式,该 feature 是在 Go 1.11 版本中出现的,由于最近在做的项目中,团队都开始使用 go module 来替代以前的 Godep,Kubernetes 也从 v1.15 开始采用 go module 来进行包管理

go 命令使用

go <command> [arguments]

command:

The commands are:bug         start a bug reportbuild       compile packages and dependenciesclean       remove object files and cached filesdoc         show documentation for package or symbolenv         print Go environment informationfix         update packages to use new APIsfmt         gofmt (reformat) package sourcesgenerate    generate Go files by processing sourceget         向当前模块添加依赖项并安装它们install     编译和安装包和依赖项list        list packages or modulesmod         module maintenancework        workspace maintenancerun         compile and run Go programtest        test packagestool        run specified go toolversion     print Go versionvet         report likely mistakes in packages

go help <command>

topics:

Additional help topics:buildconstraint build constraintsbuildmode       build modesc               calling between Go and Ccache           build and test cachingenvironment     environment variablesfiletype        file typesgo.mod          the go.mod filegopath          GOPATH environment variablegopath-get      legacy GOPATH go getgoproxy         module proxy protocolimportpath      import path syntaxmodules         modules, module versions, and moremodule-get      module-aware go getmodule-auth     module authentication using go.sumpackages        package lists and patternsprivate         configuration for downloading non-public codetestflag        testing flagstestfunc        testing functionsvcs             controlling version control with GOVCSUse "go help <topic>" for more information about that topic.

2.2 go get

go get [-t] [-u] [-v] [build flags] [packages]

Get将其命令行参数解析为特定模块版本的包,更新go.mod来要求这些版本,并将源代码下载到模块缓存中。然后构建并安装命名的包。

“go get”用于调整go.mod中的依赖项,“go install”可以用来构建和安装命令。当指定了一个版本时,'go install’将以 module-aware模式运行,并忽略在当前目录的go.mod文件

为一个包添加依赖项或将其升级到最新版本

go get example.com/pkg

升级或降级一个包到特定的版本

go get example.com/pkg@v1.2.3

移除对某个模块的依赖,并降级模块对它的依赖

go get example.com/mod@none

除了构建标志(build flags)(列在“go help build”中),go get接受以下标志。

-t 标志指示 get 考虑构建测试所需的模块
-u 标志指示get当有更新的次要或补丁版本可用时,更新模块

2.3 go test

go test [build/test flags] [packages_import_path] [build/test flags & test binary flags]

Go test自动测试导入路径下的包

“Go test”将重新编译每个包以及文件名与“*_test.go”匹配的任何文件。

这些附加文件可以包含测试函数、基准测试函数、模糊测试和示例函数。参见’go help testfunc’

每个列出的包导致执行一个单独的测试二进制文件。
文件名以“_”(包括“_test.go”)或“.”开头的文件将被忽略。

声明带有后缀“_test”的包的测试文件将被编译为一个单独的包,然后与主测试二进制文件链接并运行。

go工具将忽略名为“testdata”的目录,使其可用于保存测试所需的辅助数据

要禁用go vet的运行,使用-vet=off标志。要运行所有检查,使用-vet=all标志。

2.4 go vet

报告包装中可能的错误

2.5 go build

编译包和依赖项

go build [-o output] [build flags] [packages]

Build compiles the packages named by the import paths,along with their dependencies, but it does not install the results.

When compiling packages, build ignores files that end in ‘_test.go’

-tags tag,list
以逗号分隔的构建标记列表,以在构建期间考虑是否满足。参见go/build包

2.6 go mod

2.7 go install

三、Golang 常用软件安装

1、Protobuf

1.1、安装编译器protoc

下载地址:https://github.com/google/protobuf/releases

解压,把bin目录下的protoc.exe复制到GOPATH/bin下,GOPATH/bin加入环境变量。
1.2、安装protoc-gen-go (protoc-gen-go用于生成Go语言代码)

Protobuf is not a package, So cannot use go get to install.
use this :

go get -u github.com/golang/protobuf/{proto,protoc-gen-go}

or install all packages under protobuf

go get -u github.com/golang/protobuf/...

1.3 protoc-gen-go-grpc(使用v1.1版本)

//1.16+版本使用go install
go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1go get -u google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.1

1.4 安装Etcd
window:
windows系统下etcd的安装与使用

https://github.com/etcd-io/etcd/releases/

Golang 安装与常用命令相关推荐

  1. Docker(一):Docker的安装与常用命令

    相关阅读: Docker(一):Docker的安装与常用命令 Docker(二):Docker常用命令之镜像的创建:Dockerfile 与 commit Docker(三):Docker镜像导入与导 ...

  2. npm、cnpm、yarn的安装与常用命令

    1.安装 npm curl -L https://www.npmjs.com/install.sh | sh a.临时使用(例如安装express) npm --registry https://re ...

  3. linux下载安装的命令,linux安装和常用命令

    linux安装和常用命令 (6页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.90 积分 Linux安装和常用命令常用命令:文件管理:1,cat:把 ...

  4. iOS:如何在iphone、ipad上安装一些常用命令行命令

    iOS:如何在iphone.ipad上安装一些常用命令行命令 相信对Linux.Unix比较熟悉的朋友,在iphone或 ipad越狱后发现通过Cydia可以安装OpenSSH,一定都想安装上并且通过 ...

  5. Stata17安装及常用命令使用教程

    Stata17安装及常用命令使用教程 一.安装Stata17 二.安装外部命令 三.常用命令及操作 1.输入数据 2.描述性统计 3.线性回归 4.内生性检验 一.安装Stata17 链接:https ...

  6. Chocolatey安装与常用命令

    文章目录 Chocolatey安装与常用命令 1. Chocolatey的安装 (1) cmd安装 (2) PowerShell安装 2. 检查与更新 (1) 检查是否安装成功 (2) 查看安装目录 ...

  7. Linux-Day01_简介_安装_常用命令_虚拟机快照_静态ip

    Linux-Day01 课程内容 Linux简介 Linux安装 Linux常用命令 1. 前言 1.1 什么是Linux Linux是一套免费使用和自由传播的操作系统.说到操作系统,大家比较熟知的应 ...

  8. Docker在CentOS7上的安装及常用命令

    Docker简介:Docker是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级.可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.容器是完全使用沙箱机制 ...

  9. yum源仓库安装与常用命令

    yum源仓库安装与常用命令 yum 配置本地yum源仓库 尝试安装程序 yum常用命令 yum Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedH ...

最新文章

  1. 发现的一个翻译的不错的elasticsearch 2.3.3 官方文档的API
  2. 64位windows驱动使用asm
  3. 安卓移动应用开发考题_Android移动应用试卷试题带答案.doc
  4. no acceptable C compiler found in $PATH
  5. 五分钟入门 Dingo API
  6. 周期长度和(KMP)
  7. 自适应宽度元素单行文本省略用法探究
  8. 09-CNN手写数字识别
  9. 基于zookeeper实现分布式配置中心(二)
  10. zimbra mysql管理_zimbra 命令行管理
  11. cocos2d Labels and Fonts 标签和字体
  12. 计算机Excel电子表格处理文件,2018计算机应用基础-Excel电子表格题目
  13. python是一种什么类型的植物_植被类型预测
  14. 个人sublime定制
  15. android studio连接模拟器 mumu模拟器,雷电模拟器,夜神模拟器
  16. Microsoft Teams 创建Outlook邮件组的Team
  17. cogs1570 KMP hash
  18. 开发一个 app 有多难?需要多少钱?
  19. 3D 中的方位与角位移(旋转矩阵、欧拉角、四元数)
  20. 一款开源的强横数据可视化分析工具,支持对excel文件进行转换分析

热门文章

  1. 关于react native code push的JS端配置攻略
  2. 一道简单的ctf 分析
  3. 【技术教程】基于EasyRTSPSever与GB28181协议设备端EasyGBD实现的摄像机模拟器架构
  4. BurntSushi/toml
  5. 苹果WWDC 2021新产品预测
  6. GBase 8s synonym同义词实践
  7. 集中式网关VXLAN实验
  8. Determinants
  9. 如何在 macOS Monterey 上使用Live Text
  10. 浮生日记 2022-4-12