使用 with 来定义子Logger,以建立多个Namespace,生成更清晰的日志 func main() { handler := slog.NewJSONHandler(os.Stdout, nil) buildInfo, _ := debug.ReadBuildInfo() logger := slog.New(handler) child := logger.With( slog.Group("child", slog.String("app", "too…
使用 with 来定义子Logger,以建立多个Namespace,生成更清晰的日志 func main() { handler := slog.NewJSONHandler(os.Stdout, nil) buildInfo, _ := debug.ReadBuildInfo() logger := slog.New(handler) child := logger.With( slog.Group("child", slog.String("app", "too…
go get -u xxx@yyy xxx表示包名,在go.mod 中查看 ,yyy表示版本号,如果没有版本号,直接更新为最新版本。 一次性更新所有库: go get -d -u -t ./... 也可以:在 vscode 中打开 go.mod 文件,上面有个 check for upgrades 来进行更新。 更新 go 版本 go mod edit -go=version 如: go mod edit -go=1.22
https://github.com/canflyx/gosw 方便工作使用 主要功能: 批量扫描交换机,并生成在线 arp mac-address 表,可以根据IP地址最快找出所在交换机的端口,快速定位。 支持批量执行命令
1. database/sql 本文是 Go 标准库中 database/sql 包文档的翻译, 原文地址为: https://golang.org/pkg/database/sql/ 1.1. 2.1 概述 sql 包为操作 SQL 以及类 SQL 数据库提供了一个通用的接口。 sql 包必须与数据库驱动一同使用, https://golang.org/s/sqldrivers 列出了可用的数据库驱动列表。 不支持上下文取消操作(context cancelation)的驱动会在查询完成之后才返回。 更多 sql…
在做项目时发现gorm的时间格式是带有时区输入输出的,对平常使用的2020-01-03 12:22:33格式有一定的出入,不方便前端和后端的对接,所以自己整理一下处理这个问题方法,方便大家参考 package models import ( "database/sql/driver" "errors" "fmt" "strings" "time" ) //BaseModel 基础结构体 信息信息 type BaseM…
如果遇到一些比较特殊的分区,它们不包含常见的键值对,而是没有固定格式的纯文本,则可以使用 LoadOptions.UnparsableSections 进行处理,这中间还有两个前置条件记得补上。踩了半天的坑才发现的诀窍。。。 有UnpareableSections 还是会报错,还需要增加 SkipUnrecognizableLines true 是否跳过不符合键/值对的无法识别的行 Loose true 忽略不存在的文件或返回错误 然后使用.Section.Body() 获取 string cfg, err := …
网上很多资料,但总是一知半解,翻来复去整了半天才成功,特记录下。 总体来说Oracle和sqlite3的驱动一样,都需要gcc环境的编译,只是sqlite3需要的包稍少,废话少说,直接开干: 1、安装cygwin或TMD-GCC(sqlite需要此编译包),确认已有pkgconf.exe,各个环境有些区别,也许叫pkg-config.exe 2、从oracle下载 客户端和sdk,解压到某目录,如d:\oracle,地址:https://www.oracle.com/database/technologies/in…
最简C/S程序 server.go package main import ( "fmt" "net" ) func process(conn net.Conn) { defer conn.Close() for { var buf [128]byte n, err := conn.Read(buf[:]) if err != nil { fmt.Println("Read for tcp server faild", err) break } data …