随笔分类 - Golang
Golang的问题解决
包含vscode和goland的配置
摘要:查询: // model方法的作用 err = db.Model(&model.StreamPath{}).Where("id = ?", cast.ToUint(id)).First(&sp).Error 更新多个字段 err = db.Model(&sp).Updates(map[string]
阅读全文
摘要:这是go里面性能最好的拼接字符串的方式了; var b strings.Builder b.Grow(64) b.WriteString("hello") b.WriteString(" world") var s = b.String() fmt.Printf("s: %v\n", s) fmt.
阅读全文
摘要:示例代码: // 通过psutil获取所有分区的信息 // 重要字段: /* fmt.Printf("Device: %s\n", partition.Device) fmt.Printf("Mountpoint: %s\n", partition.Mountpoint) fmt.Printf("F
阅读全文
摘要:cgo尝试 环境 gcc需要; go环境变量 CGO_ENABLED需要设置为1 goland不支持补全cgo中的c或者c++代码, 需要使用专门的cpp的ide, 我现在用的是 vs2022 类型系统的对应 c的类型与cgo都需要对应; 00:26有一张表格 编译器类型 gcc和g++都是常用的编
阅读全文
摘要:os.ReadDir会返回 DicEntry, 它包含了一部分文件信息; func ListSubDir(path string) ([]string, error) { if !IsExist(path) { return []string{}, nil } fs, err := os.ReadD
阅读全文
摘要:golang中处理csv 标准库中csv文件的一些内容 var file io.Reader reader := csv.NewReader(file) gocsv库 他有以下特点: 简单的api来将csv内容解析成go结构体 自定义解析特定类型的函数; 自定义csv的reader和writer 基
阅读全文
摘要:参考下面这个 makefile .PHONY: build debug dlv clean tool lint help all: build build: @go build -v . debug: go build -gcflags "all=-N -l" -v -o app . dlv: dl
阅读全文
摘要:在 golang中对接接口文档 假如你作为客户端对接别人的接口文档 使用 resty库 构建 multipart/form-data的请求 使用resty client := resty.New() client.R().SetFile(key, filePath) SetFormData( map
阅读全文
摘要:go 标准库 http创建 multipart/form类型 创建最终要写到request中的数据的容器, 例如 bytes.Buffer 使用multipart包的NewWriter函数; 写入 form-data字段, 文件要使用另外的api; 构建 http.Request, 创建body 发
阅读全文
摘要:dlv启动程序后, goland中运行配置中选择 go remote可以配置dlv来进行调试; 使用 dlv命令启动: dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./demo 然后在gol
阅读全文
摘要:go module 从私有库获取包 go get是读取 go env和git的相关配置来使用 http(s) 或者ssh来拉取源码. 参考的这篇: GoGet访问私有库配置 总结的是以下几点: go get时必须要与包名匹配, 所以上传的包的名字还是要按固定的来; 比如可以是 firetech/zz
阅读全文
摘要:go对io操作进行限流 起因是我对大文件进行切片的时候, 先去获取了文件的MD5, 读取文件的过程中把我所有的磁盘io吃满了, 卡的要死, 然后就突然想到了对io进行限流; 因为我现在做的需求以后是有可能放在后台运行的. 使用的一个三方库, 可以对诸如 io.Reader和io.Writer进行限流
阅读全文
摘要:io.Pipe() 返回 reader和writer, 这种机制使得可以进行并发的数据交换; 写入到这个 writer中的数据会被同步到 reader中; io.TeeReader() 可以给原始的 TeeReader进行分流, 另外一个 writer可以同时获取到写入的数据; 我是不是可以理解成:
阅读全文
摘要:我知道的是, 是一个 http长连接, 有着类websocket的api; 后端示例代码: package main import ( "fmt" "net/http" "time" "github.com/gin-gonic/gin" ) func main() { router := gin.D
阅读全文
摘要:尝试从 godev官网下载targz安装go 下面这个是go官网的, 注意使用代理下载; wget https://go.dev/dl/go1.21.6.linux-amd64.tar.gz tar -zxvf go1.21.6.linux-amd64.tar.gz mv go/ /usr/loca
阅读全文
摘要:gws常用的操作 json格式参考 home assiatant文档中的那个定义: ha websocket文档 定义handler, 它是gws的websocket的回调方法集合定义的接口 // ClientEventHandler 是 Websocket事件回调的模板. // 有 open, c
阅读全文
摘要:我同事是这么写的. go get github.com/topxeq/mahonia var enc mahonia.Decoder = mahonia.NewDecoder("gbk")
阅读全文
摘要:gin的部分参考同事和开源项目cloudreve; gorm参考小徐先生的博客; 待补充地址
阅读全文
摘要:参考以下的代码: package database import ( "Forensics_Equipment_Plugin_Manager/logger" "Forensics_Equipment_Plugin_Manager/model" "github.com/glebarez/sqlite"
阅读全文