golang-common-command-record

GOLANG 常见命令

go build

go build 命令的作用是编译 Go 源码,并生成可执行的文件。

参数名 作用
-v 编译时显示包名
-p x 指定编译时并发的数量(使用 x 表示),该值默认为 CPU 的逻辑核心数
-a 强制进行重新构建
-n 仅输出编译时执行的所有命令
-x 执行编译,并输出编译时执行的所有命令
-race 开启竞态检测

go clean

go clean 命令可以清理当前目录内的所有编译生成的文件具体包括:

  • 当前目录下生成的与包名或者 Go 源码文件同名的可执行文件,以及当前目录中 _obj 和 _test 目录中名为 _testmain.go、test.out、build.out、a.out 以及后缀为 .5、.6、.8、.a、.o和 .so 的文件,这些文件通常是执行go build命令后生成的;
  • 当前目录下生成的包名加 “.test” 后缀为名的文件,这些文件通常是执行 go test 命令后生成的;
  • 工作区中 pkg 和 bin 目录的相应归档文件和可执行文件,这些文件通常是执行 go install 命令后生成的。

go clean 命令还允许附加参数,具体参数和作用如下表所示:

参数名 作用
-i 清除关联的安装的包和可运行文件,这些文件通常是执行go install命令后生成的
-n 仅输出清理时执行的所有命令
-r 递归清楚在 import 导入的包
-x 执行清理并输出清理时执行的所有命令
-cache 清理缓存,这些缓存文件通常时执行 go build 命令后生成的
-testcache 清理测试结果

go run

go run 命令的作用是直接运行 go 源码,不在当前目录下生成任何可执行的文件。

go install

go install 命令的作用和 go build 类似,都是将源码编译为可执行的文件,附加参数也基本通用,这里就不再赘述了。区别在于:

  • go install 命令在编译源码后,会将可执行文件或库文件安装到约定的目录下;
  • go install 命令生成的可执行文件使用包名来命名;
  • 默认情况下,go install 命令会将可执行文件安装到 GOPATH\bin 目录下,依赖的三方包会被安装到 GOPATH\bin 目录下。

go get

go get 命令的作用是获取源码包,这一操作包含两个步骤,分别是下载源码和执行 go install 命令进行安装。使用时,仅需将源码仓库地址追加到 go get 后即可(访问pkg.go.dev/,搜索包名,在包详情页可以找到仓库地址),例如:

1
go get github.com/ethereum/go-ethereum

go get 命令还允许附加参数,具体参数和作用如下表所示:

参数名 作用
-d 仅下载源码包,不安装
-f 在执行-u参数操作时,不验证导入的每个包的获取状态
-fix 在下载源码包后先执行fix操作
-t 获取运行测试所需要的包
-u 更新源码包到最新版本
-u=patch 只小版本地更新源码包,如从1.1.0到1.1.16
-v 执行获取并显示实时日志
-insecure 允许通过未加密的HTTP方式获取

若要指定所获取源码包的版本,可以通过添加 “@版本号” 的方式执行。如:

1
go get github.com/ethereum/[email protected]

go-lang-bind-struct-to-rows-scan

golang如何把struct绑定到原生SQL查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package main

type Power struct {
Ts time.Time
Current float32
Voltage int
Phase float32
}

func main() {
var taosUri = "root:taosdata@tcp(localhost:6030)/power"
taos, err := sql.Open("taosSql", taosUri)
if err != nil {
fmt.Println("failed to connect TDengine, err:", err)
return
}
sql := "select * from d1001"
rows, err := taos.Query(sql)
defer rows.Close()
for rows.Next() {
power := Power{}
s := reflect.ValueOf(&power).Elem()
numCols := s.NumField()
columns := make([]interface{}, numCols)
for i := 0; i < numCols; i++ {
field := s.Field(i)
columns[i] = field.Addr().Interface()
}
err := rows.Scan(columns...)
if err != nil {
fmt.Println(err)
}
log.Printf("采集时间:%v, 当前值:%v, 电压:%d", power.Ts, power.Current, power.Voltage)
}
}

Springboot3.0配置文件多环境配置

快速开始

创建application.yml

1
2
3
spring:
profiles:
active: dev

Hello World

Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.

Quick Start

Create a new post

1
$ hexo new "My New Post"

More info: Writing

Run server

1
$ hexo server

More info: Server

Generate static files

1
$ hexo generate

More info: Generating

Deploy to remote sites

1
$ hexo deploy

More info: Deployment