-
Go私有模块仓库必须设置GOPRIVATE,否则goget强制走公共代理;需配置GOPRIVATE=域名或通配符,自建proxy可用Nginx反向代理+模块协议,gomodvendor不解决拉取问题,须先gomoddownload。297 收藏 -
Go标准库errors.New仅创建含静态字符串的error,不带堆栈且不可展开;errors.Wrap来自已归档的github.com/pkg/errors,标准库用fmt.Errorf(...%w)替代,%w须在末尾且仅一次。185 收藏 -
Go语言处理HTTP请求参数主要有三种方式:查询参数通过r.URL.Query().Get("key")获取;表单数据需调用r.ParseForm()后使用r.FormValue("key")读取;JSON数据则用json.NewDecoder(r.Body).Decode(&struct)解析,需注意r.Body只能读取一次。464 收藏 -
需传指针并调用Elem()确保可寻址和可设置,且必须用CanSet()检查;MethodByName后须验证IsValid()及接收者匹配;Int()等取值前需用Kind()或CanInt()预检;DeepEqual仅适用于测试等低频场景。175 收藏 -
Go中可用带缓冲channel实现令牌桶限流:初始化容量为maxTokens的channel并预填满,请求时select尝试取令牌,成功则处理,失败则拒绝;后台goroutine定期补充令牌。211 收藏 -
Go语言原生不支持深拷贝,赋值和copy()均为浅拷贝;深拷贝需序列化/反序列化(如json、gob)或手动递归实现,但须处理指针、切片、map、channel及循环引用等问题。267 收藏 -
net/http可直接启动生产级服务器,无需第三方框架;需注意端口权限、表单与JSON解析区别、静态文件服务配置及中间件编写规范。433 收藏 -
使用Go语言结合fsnotify库实现文件同步工具,可监控源目录变化并自动同步至目标目录;2.支持单次同步与持续监听模式,具备跨平台能力。232 收藏 -
Go的cgo机制默认仅自动编译包根目录下的C/C++源文件,不支持直接通过//#cgo伪指令递归或显式包含子目录中的C文件;需通过分包封装、独立构建或显式链接方式实现跨目录C代码集成。432 收藏 -
文件I/O是同步且可定位的,网络I/O是异步封装、不可Seek的流式操作;前者依赖系统调用阻塞线程,后者由netpoller事件驱动实现高并发。129 收藏 -
Go支持将同一main包拆分为多个.go文件,只需用gorun.或gorun*.go一次性加载所有文件即可,无需合并代码或新建包。265 收藏 -
JavaTCP服务端使用readLine()读取数据,要求客户端发送带换行符的消息;Go客户端未发送\n导致服务端阻塞等待,从而无法响应。只需在Go客户端消息末尾添加换行符即可修复。210 收藏 -
Go的json包默认行为易踩坑:导出字段需显式jsontag才能正确编解码;小写/下划线字段须用json:"key"映射;omitempty会丢弃false和0;动态结构宜用json.RawMessage延迟解析;类型不匹配时静默失败,需手动校验;高频场景应避免反射开销。471 收藏 -
Go语言if条件必须为bool类型,不支持隐式转换;推荐带初始化的if、switch处理枚举值、卫语句提前返回。358 收藏 -
答案:Go中slice和map为引用类型,但需指针操作以修改其本身;slice传指针可改变结构,map通常无需指针仅在重置时使用,二者均需注意初始化与判空。473 收藏