go

导入包

1
2
3
4
5
6
7
8
import (
 "encoding/json"
 "fmt"
 "os"
 "time"

 dbmodels "github.com/xxxx/g_hikapi/models"
)
  • import : 导入包
  • "encoding/json" : 导入 json 包
  • "fmt" : 导入 fmt 包
  • "os" : 导入 os 包
  • "time" : 导入 time 包
  • dbmodels : 导入 dbmodels 包, dbmodels 为自定义包名或者别名

在调用包调用时,需要使用别名来调用包中的函数、变量、类型等。

go 生成 exe

1
2
$ go build -o HIK_SYNC.exe -ldflags="-w -s -X 'main.version=1.0.0'"
$ upx -9 HIK_SYNC.exe
  • go build : 编译程序
  • -o : 设置输出文件名
  • HIK_SYNC.exe : 输出文件名
  • -ldflags : 设置编译参数
  • -w : 去掉调试信息
  • -s : 去掉符号表
  • -X : 设置变量的值
  • upx : 压缩 exe 文件
  • -9 : 最大压缩级别 1-9, 1 为最佳压缩级别 9 为最佳压缩

GO 内存逃逸

1
$ go run -gcflags '-m -l' main.go
  • -gcflags : 设置编译参数
  • -m : 打印内存分配信息
  • -l : 打印逃逸信息
  • main.go : 源文件

gorm

安装 gorm 包

1
2
$ go get -u gorm.io/gorm
$ go get -u gorm.io/driver/sqlite
  • gorm.io/gorm : gorm 库
  • gorm.io/driver/sqlite : sqlite 驱动
  • -u : 更新依赖

数据库配置

数据库连接配置:

user:password@tcp/dbname?charset=utf8mb4,utf8&parseTime=true&loc=Local
  • user : 数据库用户名
  • password : 数据库密码
  • @tcp : 使用 tcp 协议连接数据库
  • dbname : 数据库名称
  • charset : 指定字符集为 utf8mb4,utf8
  • parseTime : 将时间类型解析为时间类型,而不是时间戳类型
  • loc : 指定时区为本地时区

单元测试

使用包testing包来编写单元测试。

1
2
3
import (
	"testing"
)

测试文件名以_test.go结尾,和源文件放在同一目录下。

测试类型包括如下:

  • func TestXXX(t *testing.T) : 测试函数,参数为*testing.T类型,表示测试对象
  • func BenchmarkXXX(b *testing.B) : 性能测试函数,参数为*testing.B类型,表示性能对象
  • func ExampleXXX() : 示例函数,用于展示如何使用函数
  • func TestXXX(t *testing.T) : 测试函数,参数为*testing.T类型,表示测试对象