开发一个任务看板,统计工时,汇总周报
golang安装路径,相当于java语言的JAVA_HOME
工作目录,允许设置多个路径,但下载的包只存在第一个路径。和各个系统环境多路径设置一样,windows用;
,linux(mac)用:
分隔。
我们可以把每个GOPATH下的bin都加入到PATH中。
export GOROOT=$HOME/go
export GOPATH=$HOME/gopath
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
GOROOT=D:\go
GOPATH=D:\GoWorkSpace
PATH=%GOROOT%\bin;%GOPATH%\bin;... # “...”表示其他路径
整个工作空间目录结构如下:
GoWorkSpace // GoWorkSpace为GOPATH目录
-- bin // golang编译可执行文件存放路径,可自动生成。
-- pkg // golang编译的.a中间文件存放路径,可自动生成。
-- src // 源码路径。按照golang默认约定,go run,go install等命令的当前工作路径(即在此路径下执行上述命令)。
-- common 1
-- common 2
-- common utils ...
-- myApp1 // project1
-- models
-- controllers
-- others
-- main.go
-- myApp2 // project2
-- models
-- controllers
-- others
-- main.go
-- myApp3 // project3
-- models
-- controllers
-- others
-- main.go
注意不要把src目录和java项目的src目录混淆,误认为GoWorkSpace就是具体项目的根目录。 idea开发工具open项目选择myApp目录,非GoWorkSpace目录
golang工程的依赖包经常使用go get命令来获取,例如:go get github.com/kardianos/govendor
,会将依赖包下载到GOPATH的路径下。
go get -u -v github.com/kardianos/govendor
常见的命令如下,格式为 govendor COMMAND
。
| 命令 | 功能 |
| :------------ :|:---------------|
|init |初始化 vendor 目录|
|list |列出所有的依赖包|
|add |添加包到 vendor 目录,如 govendor add +external
添加所有外部包add PKG_PATH
添加指定的依赖包到 vendor 目录|
|update |从 $GOPATH 更新依赖包到 vendor 目录|
|remove |从 vendor 管理中删除依赖|
|status |列出所有缺失、过期和修改过的包|
|fetch |添加或更新包到本地 vendor 目录|
|sync |本地存在 vendor.json 时候拉去依赖包,匹配所记录的版本|
|get |类似 go get 目录,拉取依赖包到 vendor 目录|
对于 govendor 来说,依赖包主要有以下多种类型:
状态 | 缩写状态 | 含义 |
---|---|---|
+local | l | 本地包,即项目自身的包组织 |
+external | e | 外部包,即被 $GOPATH 管理,但不在 vendor 目录下 |
+vendor | v | 已被 govendor 管理,即在 vendor 目录下 |
+std | s | 标准库中的包 |
+unused | u | 未使用的包,即包在 vendor 目录下,但项目并没有用到 |
+missing | m | 代码引用了依赖包,但该包并没有找到 |
+program | p | 主程序包,意味着可以编译为执行文件 |
+outside | 外部包和缺失的包 | |
+all | 所有的包 |
常用指令说明
# 安装govendor
go get -u -v github.com/kardianos/govendor
#将GOPATH中本工程使用到的依赖包自动移动到vendor目录中
#说明:如果本地GOPATH没有依赖包,先go get相应的依赖包
govendor add +external
或使用缩写:
govendor add +e
# 查看使用的包列表
govendor list -v fmt
# 从线上远端库添加或更新最新的依赖包
govendor fetch golang.org/x/net/context
# 从线上远端库添加或更新标签或分支等于v1的依赖包
govendor fetch golang.org/x/net/context@=v1
docker run --name mysql-8.0 \
-e MYSQL_ROOT_PASSWORD=root \
-p 3308:3306 \
-v /apps/data/mysql/conf-8.0:/etc/mysql/conf.d \
-v /apps/data/mysql/data-8.0:/var/lib/mysql -d mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
alter user'root'@'%' IDENTIFIED BY 'root';
flush privileges;
ALTER USER 'root'@'%' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
FLUSH PRIVILEGES;
set GO111MODULE=on
go mod tidy
(一)Windows 下编译Linux 64位可执行程序:
SET CGO_ENABLED=0 //不设置也可以,原因不明
SET GOOS=linux
SET GOARCH=amd64
通过 go env 查看设置是否成功。
(二)Linux 下编译Windows可执行程序:
export CGO_ENABLED=0
export GOOS=windows
export GOARCH=amd64
通过 go env 查看设置是否成功。
go build hello.go