-
TLS是微服务通信安全基础,Golang原生支持;HTTP可单向认证(ListenAndServeTLS),gRPC天然支持;mTLS需双向证书校验,须注意证书有效期、域名匹配与私钥保护。309 收藏 -
Go中struct字段导出的唯一规则是首字母大写:大写开头(如Name)可被外部包访问,小写或以下划线开头(如name、_id)均不可导出;JSON标签等不影响导出性,嵌套字段需逐层满足导出条件,且无法通过指针绕过限制。280 收藏 -
append扩容时会重新分配底层数组,新切片指向新地址,旧切片不再共享数据;预分配cap可避免多次realloc提升性能;扩容复制为浅拷贝,引用类型元素仍指向同一底层结构。112 收藏 -
Go的map默认非并发安全,多goroutine读写会触发panic;sync.Map适用于高读低写场景,但不支持遍历且无泛型;推荐用泛型SyncMap+RWMutex封装以兼顾类型安全与并发控制。303 收藏 -
Go语言禁止隐式类型转换,必须显式用T(x)语法转换;字符串与数值互转需用strconv包;结构体等复合类型间不可随意强转,仅支持特定安全转换如[]byte与string。299 收藏 -
gRPC接口版本管理依赖proto包名、模块路径和生成代码命名空间三者协同实现静态隔离;必须为每个版本设置带版本号的proto包名、独立目录及显式go_package选项。185 收藏 -
应按业务域而非技术层划分包结构,如internal/user、internal/order,每包内含handler.go、service.go等;用internal限制可见性;service依赖接口而非具体实现;模块边界依限界上下文持续演进。338 收藏 -
向已关闭的channel发送数据会立即引发panic;Go语言规范明确规定,对关闭后的channel执行send操作是非法的,运行时将触发致命错误。171 收藏 -
Go语言无全局异常捕获,panic仅限当前goroutine;统一错误处理核心是构造、传播、分类与响应策略:用fmt.Errorf("%w")链式包装、注入traceID等上下文,HTTP用中间件统一封装错误响应,goroutine错误需显式收集(如errgroup),业务错误应定义为可识别类型而非字符串匹配。125 收藏 -
值传递可能增加GC压力,指针传递需谨慎管理生命周期。1.值传递创建副本,导致更多内存分配,从而间接增加GC工作量,尤其在处理大型结构体时显著;2.指针传递仅复制地址,减少内存分配,提升GC效率,但需注意共享状态带来的并发问题和逻辑内存泄露风险;3.实际开发中应根据数据大小、可变性、逃逸分析结果、方法接收者选择、接口使用等因素权衡使用,优先保证语义清晰,并通过基准测试和性能分析工具定位瓶颈。304 收藏 -
Go中无法直接用append合并二维切片,但可通过展开操作符...将目标切片作为可变参数传入,实现高效、地道的拼接。237 收藏 -
Go语言中控制程序走向的核心是条件判断,其基石是比较运算符(==、!=、<、<=、>、>=)和逻辑运算符(&&、||、!),它们组合构成if等语句的布尔条件。458 收藏 -
fsnotify是Go监控文件变化的事实标准,需手动递归监听子目录、启动事件循环、正确解析Op位掩码、防抖去重、跨平台兜底及及时关闭watcher避免资源泄漏。381 收藏 -
选Gin:其中间件生态更适配社交场景的读多写少、高连接数特点,Context设计利于JWT鉴权、请求ID注入与限流熔断,且Redis集成调试更便捷。387 收藏 -
KubernetesOperator不是基础设施自动化的银弹,因其仅管理集群内资源,无法直接创建云厂商基础设施;应优先选用Terraform或Crossplane,Operator仅宜作为调用云SDK的代理层。248 收藏