Go踩坑小结
背景 近两三个月,在项目(go)中踩了很多坑,在此汇总一下以备忘。 大坑小坑都是坑 指针 指针是个很强大的工具,日常开发中也有很多妙用,自认在delphi/lazarus中已经是得心应手了,但在go中却频频踩坑。 空指针 空指针是最近踩坑最多的,而且一不小心就会panic,动不动就被摁在地上摩擦,踩坑后也有了些心得: 能使用值变量的情况下就不要使用指针变量,除非必须使用指针变量的场景 避免var p *T这种单纯的声明指针变量,一定要在声明指针变量时立即初始化,除非期望的初始值是nil 使用指针变量前先判空 赋值 目前在go(go1.25.x)中是不能直接给指针变量赋字面量值的,必须先把字面量赋给变量,再把变量的地址赋给指针变量,如: 1 2 n := 0 p := &n 时间转换 字符串时间解析 字符串时间解析为time.Time是经常会用到的,通常使用time.Parse即可,但必须要确保时间格式与字符串时间的格式一致。可以自定义函数实现兼容多种格式: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 func parseTime(timeStr string) (time.Time, error) { // 尝试多种格式 layouts := []string{ "2006-01-02 15:04:05", "2006/01/02 15:04:05", "2006-01-02", time.RFC3339, "02/01/2006 15:04:05", } for _, layout := range layouts { if t, err := time....