Golang【Web 入门】 常用命令

本文介绍了Golang的开发工具命令,包括查看和修改环境变量、依赖管理(gomod)以及设置国内镜像源。重点讲解了GO111MODULE的三种模式,并详细阐述了如何进行交叉编译,还提到了git的回退命令和解决Golang热加载问题的方法。同时,文章涵盖了GOOS和GOARCH的取值范围,以及在不同操作系统(如Windows和Mac)下的环境变量配置。
摘要由CSDN通过智能技术生成

golang开发工具

  • Json 转 Go Struct
  • Sql 转 Go Struct
  • Yaml 转 Go Struct
  • URL编码解码
  • 汉字、Unicode互转
  • 时间戳
  • Json
  • Base64
  • Md5

http://www.golangs.cn

常用命令

Go查看和修改环境变量

输出 go 环境有关的信息
go env

查看具体详情命令
go help environment

查看指定变量
go env 变量名

例如
go env CC
 

修改变量
go env -w 变量名=变量值

例如
go env -w CC="arm-linux-gnueabi-gcc"

命令行

CHCP 65001 就设置成 utf-8 编码。

PS E:\gormlearn\gormtest> CHCP 65001

在这里插入图片描述

Go 依赖管理

go mod tidy 的作用是把项目所需要的依赖添加到 go.mod,并删除 go.mod中,没有被项目使用的依赖。

go list -m all 列出当前模块及其所有依赖项

go mod 命令

命令作用
downloaddownload modules to local cache (下载依赖的 module 到本地 cache)
editedit go.mod from tools or scripts (编辑 go.mod 文件)
graphedit go.mod from tools or scripts (编辑 go.mod 文件)
initintalize new module in curent directory (在当前文件夹下初始化一个新的module, 创建 go.mod 文件)
tidyadd missing and remove unused modules (增加丢失的 module,去掉未用的module)
vendormake vendored copy of dependencies (将依赖复制到 vendor 下)
verifyverify dependencies have expectd content (校验依赖 检查下载的第三方库有没有本地修改,如果有修改,则会返回非 0,否则验证成功。)
whyexplain why packges or modules are needed (解释为什么需要依赖)

env

GO111MODULE

GO111MODULE 是 Go 1.11 引入的新版模块管理方式。

GO111MODULE 环境变量用于开启或关闭 Go 语言中的模块支持,它有 off、on、auto 三个可选值,默认为 auto。

1 GO111MODULE=off
无模块支持,go 会从 $GOPATH 文件夹和 vendor 目录中寻找依赖项。

2 GO111MODULE=on
模块支持,go 忽略 $GOPATH 文件夹,只根据 go.mod 下载依赖。

4 GO111MODULE=auto
在 $GOPATH/src 外层且根目录有 go.mod 文件时,开启模块支持;否者无模块支持。

go env -w GO111MODULE=on

Go 设置国内镜像源

go env -w GOPROXY=https://goproxy.cn,direct

golang 的国内镜像源

   阿里云:https://mirrors.aliyun.com/goproxy
     微软:https://goproxy.io
   七牛云:https://goproxy.cn
GoCenter:https://gocenter.io

设置 go env 中的内容

1)、比如这个 GOOS:编译代码的操作系统名称,和 go build 搭配使用。

GOOS=windows

go build 命令执行后生成了一个供 windows 使用的 projectName.exe 文件。

2)、我们要改成在 linux下执行的文件,命令 SET。

SET GOOS=linux

go build 命令执行后生成了一个供 linux 执行的 projectName 文件。

Golang 环境变量整理(go env)

名称说明
CGO_ENABLED指明cgo工具是否可用的标识。
GOARCH程序构建环境的目标计算架构。
GOBIN存放可执行文件的目录的绝对路径。
GOCHAR程序构建环境的目标计算架构的单字符标识。
GOEXE可执行文件的后缀。
GOHOSTARCH程序运行环境的目标计算架构。
GOOS程序构建环境的目标操作系统。
GOHOSTOS程序运行环境的目标操作系统。
GOPATH工作区目录的绝对路径。
GORACE用于数据竞争检测的相关选项。
GOROOTGo语言的安装目录的绝对路径。
GOTOOLDIRGo工具目录的绝对路径。

GOBIN 说明

GOBIN 是一个环境变量,用于指定 Go 二进制文件(可执行文件)的安装目录。
如果未指定 GOBIN,则默认将可执行文件安装到 $GOPATH/bin 目录下。

在这里插入图片描述

如果你想为 GOBIN 指定一个新的目录,可以在终端中运行以下命令(例如,将可执行文件安装到 /usr/local/bin 目录下):

export GOBIN=/usr/local/bin

如果想要永久配置 GOBIN,可以将上述命令添加到 shell 配置文件(例如,.bashrc 或者 .zshrc)中。

需要注意的是,只有在运行 go install 命令时才会用到 GOBIN 环境变量,而在运行 go build 命令时不会使用 GOBIN 环境变量。

在这里插入图片描述

[root@bogon bin]# vi ~/.bashrc

在这里插入图片描述
在这里插入图片描述

centos 全局配置GOBIN

[root@bogon bin]# vi /etc/profile
[root@bogon bin]# source /etc/profile
[root@bogon bin]#

在这里插入图片描述

在这里插入图片描述

git

git checkout .

此命令检出版本库最新的代码,并放弃本地修改。

回退命令

$ git reset --hard HEAD^ 回退到上个版本
$ git reset --hard HEAD~3 回退到前3次提交之前,以此类推,回退到n次提交之前
$ git reset --hard commit_id 退到/进到 指定commit的sha码

强推到远程:
$ git push origin HEAD --force

Golang 清除 go get 的包

# 下载包
go get -u go clean -i github.com/werbenhu/go-tools
 
# 清理包
go clean -i github.com/werbenhu/go-tools...
 
# 清理全部包
go clean --modcache

Golang 热加载报错 command not found:fresh 解决方案

总会遇到“ 不是内部或外部命令,也不是可运行的程序或批处理文件。”或者“command not found:fresh”。

解决方案:

第一步:打开任意一处终端,用 go env 命令查看,如果 GO111MODULE=auto,将这一行改成 GO111MODULE=on

第二步:go install github.com/pilu/fresh@latest
第三步:go mod init <你的项目名称>
第四步:go get github.com/pilu/fresh
紧接着直接 fresh 就行了。

在这里插入图片描述

交叉编译

所谓的交叉编译,是指在一个平台上就能生成可以在另一个平台运行的代码,例如,我们可以32位的Windows操作系统开发环境上,生成可以在64位Linux操作系统上运行的二进制程序。

在其他编程语言中进行交叉编译可能要借助第三方工具,但在Go语言进行交叉编译非常简单,最简单只需要设置 GOOSGOARCH 这两个环境变量就可以了。

GOOS 与 GOARCH

GOOS的默认值是我们当前的操作系统, 如果windows,linux,注意 mac os 操作上的值是darwin。

GOARCH则表示CPU架构,如 386,amd64,arm等。

获取 GOOS 和 GOARCH 的值
我们可以使用go env命令获取当前GOOS和GOARCH的值。

$ go env GOOS GOARCH

Windows env

PS C:\WINDOWS\system32> go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\Administrator\AppData\Local\go-build
set GOENV=C:\Users\Administrator\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\Administrator\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\Administrator\go
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=C:\Users\Administrator\.g\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Users\Administrator\.g\go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.20
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 -fdebug-prefix-map=C:\Users\ADMINI~1\AppData\Local\Temp\go-build682908498=/tmp/go-build -gno-record-gcc-switches
PS C:\WINDOWS\system32>

Mac env

wghen@Mac bin % go env                                     
GO111MODULE="auto"
GOARCH="amd64"
GOBIN=""
GOCACHE="/Users/wghen/Library/Caches/go-build"
GOENV="/Users/wghen/Library/Application Support/go/env"
GOEXE=""
GOEXPERIMENT=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="darwin"
GOINSECURE=""
GOMODCACHE="/Users/wghen/go/pkg/mod"
GONOPROXY=""
GONOSUMDB=""
GOOS="darwin"
GOPATH="/Users/wghen/go"
GOPRIVATE=""
GOPROXY="https://goproxy.cn,direct"
GOROOT="/usr/local/go"
GOSUMDB="sum.golang.org"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/darwin_amd64"
GOVCS=""
GOVERSION="go1.20.2"
GCCGO="gccgo"
GOAMD64="v1"
AR="ar"
CC="clang"
CXX="clang++"
CGO_ENABLED="1"
GOMOD=""
GOWORK=""
CGO_CFLAGS="-O2 -g"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-O2 -g"
CGO_FFLAGS="-O2 -g"
CGO_LDFLAGS="-O2 -g"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -arch x86_64 -m64 -pthread -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=/var/folders/2s/1qxv2tsx4cq8x5x3x8z912d80000gn/T/go-build1876170266=/tmp/go-build -gno-record-gcc-switches -fno-common"
wghen@Mac bin % pwd
/Users/wghen/go/bin
wghen@Mac bin % 

GOOS 和 GOARCH 的取值范围

GOOS 和 GOARCH 的值成对出现,而且只能是下面列表对应的值。

$GOOS	    $GOARCH
android	    arm
darwin	    386
darwin	    amd64
darwin	    arm
darwin	    arm64
dragonfly   amd64
freebsd	    386
freebsd	    amd64
freebsd	    arm
linux	    386
linux	    amd64
linux	    arm
linux	    arm64
linux	    ppc64
linux	    ppc64le
linux	    mips
linux	    mipsle
linux	    mips64
linux	    mips64le
linux	    s390x
netbsd	    386
netbsd	    amd64
netbsd	    arm
openbsd	    386
openbsd	    amd64
openbsd	    arm
plan9	    386
plan9	    amd64
solaris	    amd64
windows	    386
windows	    amd64

示例

编译在64位Linux操作系统上运行的目标程序。

$ GOOS=linux GOARCH=amd64 go build main.go

编译arm架构Android操作上的目标程序

$ GOOS=android GOARCH=arm GOARM=7 go build main.go
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知其黑、受其白

喝个咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值