golang
已收录文章:1317篇
-
sync.Once通过确保初始化函数只执行一次来实现线程安全的单例。1.使用包级变量保存单例实例;2.通过GetInstance方法调用once.Do进行初始化;3.初始化逻辑仅在首次调用时执行,后续调用直接返回已有实例。应用场景包括配置管理、日志记录器、数据库连接池和缓存服务。注意事项:Do方法仅接受无参函数,避免长时间阻塞,不可复用Once对象,多个初始化步骤需合并到一个函数中。483 收藏
-
Go函数参数默认值传递,大对象传参应使用指针以避免内存拷贝开销。1.值传递复制整个结构体,开销大;2.指针传递仅传递地址,性能更优;3.对大结构体或含slice、map的类型优先用指针;4.小对象值传递更高效,避免过度使用指针。318 收藏
-
使用errors.As判断包装错误中的具体类型,errors.Is比较语义化错误,结合自定义错误类型实现精准处理,避免字符串比较或反射等不安全方式。286 收藏
-
答案:Go反射可通过reflect.Value和reflect.Type动态操作slice和map;使用reflect.SliceOf创建slice类型,reflect.Append添加元素并用Set赋值;通过reflect.MapOf定义map类型,reflect.MakeMap初始化,SetMapIndex设置键值对;遍历集合需根据Kind判断类型并循环处理。385 收藏
-
Go语言通过net/http包可快速构建HTTP服务,核心步骤为:定义处理器函数处理请求、使用http.HandleFunc注册路由、调用http.ListenAndServe启动服务。处理器通过检查r.Method区分GET、POST等请求方法,利用r.URL.Query()获取查询参数,读取r.Body获取请求体。可通过实现http.Handler接口的ServeHTTP方法创建带状态的自定义处理器,便于复用和模块化。错误处理需返回恰当状态码,如http.Error(w,msg,code)或手动设置W308 收藏
-
首先安装NATS服务器并启动,再通过Go的nats.go库连接:nc,err:=nats.Connect("nats://localhost:4222");接着使用nc.Publish("topic",data)发布消息,nc.Subscribe("topic",callback)订阅并处理消息,支持通配符如order.*匹配多主题;在微服务中可封装为组件,实现服务间解耦,如用户注册后发送事件,邮件服务监听并异步发送邮件。258 收藏