-
Go反射读取接口值需先用reflect.ValueOf获取,再通过.Elem()或.Interface()拆包,但必须检查非nil且可寻址,否则panic;推荐先.Interface()再反射或用typeswitch处理。390 收藏 -
筛到10⁶卡死因goroutine泛滥致调度器崩溃;应分段处理、管道限流、传区间而非单数、用atomic.Bool或位图优化写入、ARM64/wasm需降并发度。362 收藏 -
状态模式通过接口与结构体实现行为切换,Go中用State接口定义Handle方法,Machine作为上下文持有当前状态并委托调用;OnState和OffState实现具体逻辑并互相切换;main函数初始化Machine为OffState,循环调用Request触发五次状态翻转,输出交替的开关提示;该模式分离状态逻辑,避免冗杂条件判断,提升可维护性,适用于多状态复杂行为系统。307 收藏 -
进阶是解决高并发、可观测、可维护的系统性问题:需自定义http.Client并设连接池与超时,用RWMutex/Poll优化并发,结构化日志,避免资源泄漏,深入理解连接、内存、上下文生命周期。207 收藏 -
Go项目启动关键在工具链就位:需验证goversion、GOPATH/GOBIN配置,用goinstall安装gopls、dlv等工具并加入PATH,确保IDE能调用;环境变量顺序和shell配置加载时机常被忽略。244 收藏 -
Go面试考内存模型核心是逃逸分析:变量逃逸看“escapestoheap”,闭包捕获、返回地址、interface{}传参、切片扩容等均导致逃逸;栈归goroutine管,堆归GC管;高频逃逸加重GC压力,需用sync.Pool、预估容量等优化。386 收藏 -
%v和%+v的区别在于:对结构体,%v仅输出字段值如{123"hello"},%+v输出带字段名的格式如{A:123B:"hello"};对map、slice等其他类型二者行为完全相同。311 收藏 -
Go多核性能瓶颈主因是GOMAXPROCS配置失当、I/O阻塞未卸载及goroutine泄漏;需检查同步I/O、全局锁争抢、LockOSThread误用,并用trace/pprof定位调度问题。320 收藏 -
Go函数签名中参数顺序不可调换,因顺序是类型的一部分;空参数或返回列表必须保留括号;error虽非语法强制置末位,但属关键约定,影响工具链、泛型匹配与第三方库兼容性。276 收藏 -
Trivy扫描Go静态二进制需强制启用文件系统扫描、注入go.mod.json并避开挂载点;OOMKilled根源是cgroupv1与Go内存统计错位;eBPFtrace断链因用户态与内核态上下文未桥接。466 收藏 -
不能。标准http.ServeMux仅支持前缀和完全匹配,不解析路径参数如/user/123中的123;注册/user/{id}会导致404,需手动解析或改用gorilla/mux等第三方库。236 收藏 -
Go匿名函数无名但可赋值、立即调用或传参,语法为func(参数)返回类型{函数体};闭包捕获外部变量引用而非值拷贝,易致变量共享陷阱。120 收藏 -
本地包路径必须以./或../开头,不可用裸名称;同模块内子目录包自动识别,无需写入go.mod;避免循环导入,测试时注意工作目录影响资源定位。103 收藏 -
需先用reflect.TypeOf()获取类型再调.Kind()判断是否等于reflect.Map,且必须前置检查接口值非nil,否则reflect.TypeOf(nil)返回nil导致panic。158 收藏 -
RabbitMQ生产者发不出消息,需检查amqp.Publishing的exchange和routingkey是否为空;消费者panic导致消息重复,须关闭autoAck并手动Ack;JSON序列化失败常因字段未导出或tag拼写错误;服务重启后消息堆积,应复用连接/Channel并设置上下文超时。372 收藏