-
Consul客户端初始化失败主因是导入错误包或传nil配置;必须用"github.com/hashicorp/consul/api"且配置Address;服务注册后不可见常因缺失健康检查;Health().Service默认只返回通过检查的服务;Docker中需避免127.0.0.1网络问题。321 收藏 -
Go语言基础类型共5种:bool、整数类、浮点类、复数类、string;其中bool仅含true/false且不与0/1互转;整数类分有符号/无符号及byte(uint8)、rune(int32)别名;浮点类为float32/float64,比较须用math.Abs避免==。321 收藏 -
Go中无引用类型,但指针等可模拟引用语义;必须用T而非T的场景包括:修改原变量、避免大结构体拷贝、实现仅在T定义的方法集的接口。321 收藏 -
Go函数参数均为值传递,slice/map/channel/interface传的是含指针的结构体副本,故修改元素或写入键值会影响原变量,但重赋值不会;需替换整个结构时须显式传指针。321 收藏 -
ClickHouseGo驱动连不上主因是默认启用TLS和压缩,需显式设secure=false、compress=false;批量写入要避免单行INSERT,改用stmt.Exec批量传参(1w–10w行/批);读取Nullable(String)必须用sql.NullString或ch.String;time.Time查询需注意时区匹配,建议用字符串格式WHERE条件。321 收藏 -
AC自动机比Trie树快在Search阶段为真正线性时间O(n),而Trie树最坏O(n×m);实测10万词库+500字文本,AC自动机0.8ms,Trie树超12ms。321 收藏 -
StructField.Offset是字段相对于结构体实例起始地址的字节偏移量,受内存对齐影响,非绝对地址;须结合unsafe.Pointer与实例基址计算真实地址,不可直接用于任意内存读写。321 收藏 -
struct{}能当占位符因其内存占用为0字节,编译器特殊优化;常用于mapvalue、channel信号、集合实现等场景,但不支持JSON序列化、反射操作及方法定义。321 收藏 -
Go服务端API兼容性关键在于旧客户端请求的完整接收:新增字段用指针或omitempty,删字段用json:"-"并注释,类型变更需双字段过渡;路径方法变更须路由层兜底注册;错误码与响应结构须严格保持旧格式。321 收藏 -
Go并发测试需为每个goroutine单独加defer+recover并用chanerror收集错误,否则panic会逃逸导致测试静默失败或进程退出;必须确保recover数量与goroutine数量严格一致。321 收藏 -
Go中处理表单文件上传需先调用ParseMultipartForm解析,再通过*multipart.FileHeader的Open()获取io.Reader读取内容;FileHeader仅含元信息不存数据,须校验Size等基础字段。321 收藏 -
使用goroutine与channel实现Go语言并发文件下载,通过WaitGroup等待任务完成,并用带缓冲channel控制最大并发数防止资源耗尽。321 收藏 -
g是最轻量可靠的Go版本管理工具,用Go编写、无依赖、不污染环境,通过shim劫持PATH切换版本,适合纯Go开发者。320 收藏 -
Go语言net/url包提供安全URL解析与构造能力,支持Parse()解析、Query()操作参数、ResolveReference()合并路径及String()生成标准URL。320 收藏 -
Go的time包通过time.Ticker和time.AfterFunc可实现轻量周期任务;time.Ticker适合固定间隔循环执行,需调用Stop()防泄漏。320 收藏