golang
已收录文章:212篇
-
Go语言中通过reflect.Value和reflect.Type实现对嵌套map、slice的动态访问,利用Kind判断类型并递归遍历:map通过MapKeys和MapIndex处理,slice和array通过Len和Index遍历,结合Indirect解指针,可统一处理如map[string]interface{}含slice再含map的复杂结构。344 收藏
-
复用http.Client和Transport,配置MaxIdleConns、MaxIdleConnsPerHost、IdleConnTimeout等参数优化连接池,设置Client.Timeout、ResponseHeaderTimeout等超时避免阻塞,启用Keep-Alive保持长连接,提升GolangHTTP客户端性能。204 收藏
-
指针保存变量地址,通过T声明、&取地址、解引用,可修改原值并用于函数传参;切片是数组封装,含指针、长度、容量,共享底层数组易致副作用,需copy或append创建副本;指针与切片结合可用于修改切片本身,但推荐返回新切片;nil切片无底层数组,空切片有底层数组但无元素,判断为空应使用len(s)==0。393 收藏
-
中介者模式通过引入中介者封装对象间通信,实现解耦。在Go中,用接口定义中介者与同事角色,同事间不直接交互,而是通过中介者转发消息,如聊天室示例中用户发送消息由ChatRoom转发给其他用户;在电商系统中,订单、库存、通知等模块通过事件中介者协调,订单模块触发事件,库存与通知模块注册处理器响应,无需直接依赖。优点是降低耦合、提升可维护性与扩展性,新增模块只需注册到中介者;但需注意中介者职责不宜过重,避免臃肿,且不适用于简单通信场景。485 收藏
-
答案:Go语言通过结构体标签结合反射实现字段校验,如validate:"required"用于定义规则,反射读取标签并执行自定义逻辑,示例中Name不能为空、Age需≥18,输出相应错误提示。236 收藏
-
Go语言中text/template用于动态文本渲染,支持变量绑定、条件判断、循环、函数调用和模板嵌套。通过{{}}插入逻辑,如{{.Name}}访问字段,if/range控制流程,Funcs注册函数,define定义子模板,实现灵活的纯文本生成,适用于配置文件、邮件、代码生成等场景。406 收藏