-
Go语言中if和switch用于分支控制,if可带初始化语句,作用域限于块内,支持else-if链;switch无需break,支持表达式、多值匹配、无表达式条件判断及类型断言,推荐用switch替代复杂if-else以提升可读性。
-
Go语言无内置终端,需在系统终端验证go命令是否可用:执行goversion成功显示版本号即通过;若报commandnotfound,说明PATH未正确配置,需检查对应shell配置文件并重启终端。
-
Golang消息分发中心需理清“谁发”“发给谁”“防压垮”三件事:用channel做管道、WaitGroup收尾、context控生命周期、标签/Topic/连接池实现路由,配合worker池+信号量限流、超时取消与重试兜底。
-
Go操作Kafka易丢消息、连不上、消费卡死,主因是客户端选型不当(kafka-go不支持自动rebalance,sarama需显式Close)、关键配置未修改(如sarama.RequiredAcks默认NoResponse)、资源释放遗漏(producer/consumer未Close)及advertised.listeners配置错误导致连接重定向失败。
-
Go语言JSON序列化性能优化的关键是减少反射开销、避免内存分配、合理使用结构体标签,并按需选用预编译方案;json-iterator通过类型缓存提升2–5倍性能,easyjson生成专用方法提速10倍以上,同时可复用sync.Pool缓冲区、替换为msgpack或Protobuf等更高效格式。
-
Go语言不能直接创建Vue项目,因其缺乏Node.js生态支持;正确做法是用VueCLI初始化前端,再由Go托管构建后的静态资源或通过反向代理联调。
-
Go标准库无内置LRU,需用container/list+map+sync.RWMutex实现;sync.Map不适用因无法维护访问序、不能原子执行查map/移节点/返回值,且并发MoveToFront会panic;正确做法是map存*list.Element,Element.Value为含key/value的结构体,读写加锁粒度要细,容量控制须先插后删,四者并发对齐才稳定。
-
Redis分布式锁必须使用SETkeyvalueNXPXmilliseconds原子命令实现,NX保证互斥性,PX防止死锁,value须为唯一随机值,解锁和续期均需Lua脚本保障原子性。
-
应包装driver.Conn实现在Prepare、Query、Exec中统一打点,用time.Now()测端到端耗时,阈值建议200ms;须记录脱敏SQL、参数、调用栈及连接ID,避免仅包装db.Query导致漏测网络与执行时间。
-
Go语言支持多返回值,便于错误处理和数据返回。例如funcdivide(a,bint)(int,bool)返回商和成功状态,调用时用result,success:=divide(10,2)接收,可忽略值如_,success:=divide(10,0),还可命名返回值提升可读性,如funcswap(x,yint)(aint,bint){a=y;b=x;return},调用first,second:=swap(1,2)输出21,该特性广泛用于os.Open、strconv.Atoi等函数。
-
统一响应结构体应定义为含Code(int)、Message(string)、Data(interface{})和Timestamp(int64)字段的Response结构,封装Success/Fail等函数统一调用,避免手动c.JSON、双写响应及敏感信息泄露。
-
不会——http.ServeFile默认Content-Disposition为inline,浏览器可能直接打开而非下载;需手动设置attachment头,且必须校验路径防遍历,推荐用ServeContent替代以支持断点续传和缓存控制。
-
Go语言可通过reflect包实现通用字段赋值,支持嵌套路径(如"A.B.C")、nil指针自动初始化、数组索引及多类型值转换,需确保字段导出、可寻址且可设置,并封装为SetField(obj,path,value)工具函数。
-
结构体是Go语言中用于组合不同类型字段的自定义数据类型,支持字段可见性控制、嵌套及匿名字段实现组合。通过type定义结构体,如typePersonstruct{Namestring;Ageint},字段首字母大写为公有,小写为私有;可嵌套其他结构体建模复杂数据,如HomeAddrAddress;支持匿名字段实现字段提升,如Animal嵌入Dog后可直接访问Species。使用new或&创建指针实例,强调组合而非继承,提升代码复用与维护性。
-
数组固定长度适合小数据,切片动态扩容更灵活;遍历和访问性能相近,但传参和扩容时切片更高效;建议小规模用数组,大规模及动态场景用切片并预设容量。