Go教程技术文章
-
直接测handler函数时用httptest.NewRecorder;需完整HTTP生命周期(如重定向、中间件、TLS)才用httptest.NewServer。前者轻量快速,适合90%单元测试;后者启真实服务,易致端口冲突、变慢,属集成测试范畴。100 收藏 -
Gomap迭代不按插入顺序是设计使然,旨在防止依赖顺序;其底层从随机bucket和cell开始遍历,每次range起点由运行时动态生成;需有序遍历时应先提取key切片并排序。100 收藏 -
直接用Eval容易出错,因go-redis的Eval要求*redis.Script实例而非字符串,且keys和args必须严格分离为[]string和interface{}切片,否则导致类型错误、越界或脚本内无法访问参数。100 收藏 -
Go语言通过反射可动态获取结构体方法,核心是使用reflect.TypeOf获取类型对象,再调用NumMethod和Method遍历方法;需注意值接收者与指针接收者差异:值类型只能访问值接收者方法,而指针类型可访问两者;通过reflect.Method可获取方法名、类型签名及函数值,进而实现动态调用。100 收藏 -
值类型直接存储数据,变量间相互独立;指针类型存储地址,可共享和修改同一内存数据。100 收藏 -
GoHTTP服务器需显式创建ServeMux、校验Method/Content-Type、配置超时、包装ResponseWriter以实现可观察性与可靠性。100 收藏