-
Python开发者写Go时最常犯的错是忽略值传递与指针显式控制的本质差异:range遍历切片时修改item无效、map嵌套取值未判nil致panic、HTTP客户端不设超时或漏关Body、滥用mock而非接口隔离——根源在于未切换“名字绑定”到“显式控制”的心智模型。277 收藏 -
strconv包用于Go中字符串与基本类型转换,提供Atoi、ParseInt、ParseFloat实现字符串转数字,Itoa、FormatInt、FormatFloat实现数字转字符串,需注意格式合法性及错误处理。115 收藏 -
defer无法在运行时取消,但可通过闭包+布尔标记控制其内部逻辑是否执行;或推迟defer语句的执行位置实现“条件注册”;panic不会跳过defer,反而会按栈逆序触发。139 收藏 -
xml.Unmarshal要求结构体字段必须导出(首字母大写),私有字段即使有xmltag也不会被解析;嵌套字段、命名空间处理、xml.Decoder使用等均有严格规范。461 收藏 -
飞书机器人Webhook地址必须以https://开头且无空格或换行,需用strings.TrimSpace()清洗并校验前缀;日志告警应通过异步Hook实现,避免阻塞主流程。267 收藏 -
使用json:"-"标签可完全忽略结构体字段的JSON反序列化,支持单独使用、与其他标签组合、嵌套结构体中局部忽略,也可通过空接口或自定义UnmarshalJSON方法实现动态控制。254 收藏 -
Go的map并发写会panic,因运行时检测到concurrentmapwrites;sync.Map适用于读多写少场景,而sync.RWMutex+泛型map更灵活高效。108 收藏 -
必须手动判断参数有效性再拼接WHERE条件,避免空字符串、零值、nil等误入SQL;推荐用切片累积条件+strings.Join拼接,并动态处理IN子句占位符。497 收藏 -
HTTP接口404是因为未调用RegisterXXXHandlerFromEndpoint注册路由;该函数必须在http.ListenAndServe前显式调用,且ctx不可提前cancel、endpoint需指向已启动的gRPC服务。389 收藏 -
当任务需周期性重复执行时,应优先使用time.Ticker;它自动维持固定间隔的时间事件流,资源开销低,而time.Timer仅适用于单次延迟或需严格串行节拍的场景。351 收藏 -
在Go中使用Protobuf定义RPC需先编写.proto文件,用service声明服务及方法;2.通过protoc生成Go代码,包括消息结构体和服务接口;3.实现服务端结构体并注册gRPC服务;4.客户端通过Stub调用远程方法,完成通信。该流程支持跨语言、高效率的微服务交互。218 收藏 -
高并发下本地磁盘IO瓶颈无法靠增加goroutine解决,必须解耦I/O与CPU工作:单goroutine顺序读+合理缓冲(如64KB)+按逻辑边界分块处理,避免多goroutine争抢同一文件导致寻道恶化。170 收藏 -
Excelize/v2是当前Go生态处理.xlsx最可靠的选择,但高度依赖文件合规性、写入方式与类型处理:不支持非标格式,中文需UTF-8,大批量须用SetSheetRow或StreamWriter,读公式/日期须判类型并手动计算。212 收藏 -
直接用tikv.RawClient会连不上集群,因其不自动读取PD地址、不做服务发现,仅依赖硬编码的PDendpoints;若地址错误或未配TLS/网络不通,连接将超时而非报明确错误。476 收藏 -
Go1.18+泛型interface最简语法是typeName[Tany]interface{...},T为类型参数,any是约束而非别名,Container[int]与Container[string]是不同类型,不可互赋。195 收藏