golang
已收录文章:39篇
-
<p>解释器模式通过构建语法树实现表达式计算,适用于数学表达式等结构化语言处理。定义Expression接口及Number、Variable、BinaryOperation等节点类型,分别解释常量、变量和操作符。以"3+x*2"为例,构造嵌套的AST并调用Interpret方法,结合变量环境计算结果。支持扩展操作符、解析器集成与性能优化,适合规则动态变化场景。</p>285 收藏
-
gRPC拦截器是Go中用于在请求前后插入通用逻辑的钩子函数,分为服务端和客户端的一元与流式拦截器。通过grpc.UnaryInterceptor注册服务端拦截器可实现日志、错误恢复等,如loggingInterceptor记录请求信息;客户端拦截器如authInterceptor可添加认证头。多个拦截器可通过grpc-middleware.ChainUnaryServer组合使用,便于统一处理认证、监控等横切关注点,提升代码复用性与可维护性。481 收藏
-
Golang通过sync.Pool对象重用、strings.Builder减少字符串拼接、预分配切片和map、自定义内存分配器、优化堆分配及逃逸分析等方法减少内存碎片,结合runtime监控和pprof分析,辅以操作系统大页内存、容器化隔离和定期重启等手段,可有效提升内存使用效率和程序性能。380 收藏
-
Go通过error类型处理错误,使用defer和recover捕获panic以应对未知错误,适用于goroutine、Web中间件等场景,防止程序崩溃,确保服务健壮性。437 收藏
-
选择值接收者还是指针接收者取决于是否需修改接收者状态及性能考量。若方法仅读取状态或返回新值,且结构体较小,值接收者更安全清晰;若需修改状态或结构体较大以避免复制开销,应使用指针接收者。接口实现时,值接收者允许T和P均满足接口,而指针接收者仅P可满足,设计时需权衡语义与灵活性。159 收藏
-
数组转切片可直接用[:]语法,共享底层数组;切片转数组需确保长度足够,推荐用copy安全转换,避免强制类型转换导致崩溃。451 收藏