-
Golang 复制文件夹,包括文件夹中的文件
/**
* 拷贝文件夹,同时拷贝文件夹中的文件
* @param srcPath 需要拷贝的文件夹路径: D:/test
* @param destPath 拷贝到的位置: D:/backup/
*/
func CopyDir(srcPath string, de
-
概述
路由是自定义url地址执行指定的函数,良好的路由定义可以对seo起到很好的效果。
1. 基本路由
gin框架封装了http库,提供了 GET、POST、PUT、DELETE、PATCH、HEAD、OPTIONS 这些http请求方式。
使用 r
-
gorm是目前用得最多的go语言orm库,但是目前gorm官方并不支持oracle的驱动,需要用到第三驱动,最近有个项目要往oracle写数据,记录一下踩到的坑
下载依赖
go get github.com/cengsin/oracle
这个驱动与最
-
新建数据库
将部分数据存储至Mysql,使用axios通过golang搭建的http服务器获取数据。
sql
DROP DATABASE VUE;
create database if not exists vue;
use vue;
JSON to MySQL (transform.tools)
sql
DROP DATABASE VUE;
create database if
-
Go testing.T.Cleanup 的关键不是把回调写在哪里,而是看它注册到哪个测试作用域以及登记顺序。本文解释同一 T 上的 LIFO 规则、父子测试边界、资源依赖登记方式和并发注册的排查方法。
-
Go slog.HandlerOptions.Level 是日志最低级别门槛。本文用 TextHandler 和 JSONHandler 说明如何过滤 Debug,如何用 LevelVar 动态打开调试日志,并排查默认 logger、独立 logger 与性能开关不生效的问题。
-
Go 使用 bufio.Reader 逐行读取时,ReadString 和 ReadBytes 会保留换行分隔符;本文对比 ReadLine、Scanner,并给出正确处理 CRLF 与 EOF 最后一行的写法。
-
Go 1.27 为 QUIC 服务端握手增加 QUICConfig.ClientHelloInfoConn,用来指定 ClientHelloInfo.Conn 的底层连接。本文区分 TLS Conn、QUICConn 与底层 net.Conn,说明只读边界和回调取值方式。
-
不是必须,但绝大多数跨模块本地开发场景下replace是唯一可靠方式;go.work是Go1.18+推荐的多模块协同方案;子模块go.mod中不可require主模块;CI/CD需禁用go.work并独立发布各模块。
-
Go不推荐手写双重检查锁单例,因sync.Once已是内存安全、零分配且经优化的成熟实现;手写易出错、难维护,且无法获得编译器特殊优化。
-
G不绑定M,M也不固定属于P;但运行中的G必须在M上执行,每个M必须持有且仅持有1个P才能执行用户代码,这是调度成立的最小契约。
-
gofmt仅处理基础格式(缩进、空格、括号),而goimports增强支持import自动增删、分组(标准库/第三方/本地)与排序;需配置VSCode的"go.formatTool"、"formatOnSave"和"codeActionsOnSave"并注意注释、引号及模块环境影响。
-
Go标准库log包轻量易用但默认不支持分级、文件输出或轮转;其日志写入os.Stderr,带固定时间戳和换行,可通过SetPrefix/SetFlags自定义前缀与格式,SetOutput重定向至文件或MultiWriter,封装结构体可实现级别方法,适合中小型项目初期使用。
-
Go高并发I/O核心是goroutine+net.Listener组合:Accept后立即gohandleConn,需设读写超时、用sync.Pool复用bufio、禁用syscall事件循环。
-
初始化切片应根据场景选择:nil切片(vars[]int)安全但需注意==nil判断;空切片([]int{})非nil;预知大小时用make([]int,0,N)避免多次扩容。