Go教程技术文章
-
Go原生支持交叉编译,只需GOOS和GOARCH被官方支持且禁用cgo(CGO_ENABLED=0);运行gotooldistlist可查支持组合,含cgo或平台特定syscall需额外工具链或构建标签隔离。239 收藏 -
Go实现RESTfulAPI的核心是统一URL路径、HTTP方法、请求体、查询参数和响应状态/格式;需按资源设计路由,规范解析参数与请求体,构造一致响应结构,并准确使用HTTP状态码表达语义。238 收藏 -
打开文件时必须检查error值,使用os.IsNotExist和os.IsPermission判断错误类型;2.成功打开后用deferfile.Close()释放资源;3.生产环境应提供友好提示而非暴露原始错误,关键操作可设重试或默认值兜底。238 收藏 -
Go语言中使用compress/gzip包实现文件及内存数据的压缩解压。1.压缩文件:打开源文件,创建.gz目标文件,通过gzip.NewWriter写入并调用Close()完成压缩。2.解压文件:用gzip.NewReader读取.gz文件,io.Copy将解压数据写入新文件。3.内存操作:bytes.Buffer结合gzip.Writer/Reader实现字节流压缩解压,适用于API响应等场景。关键点:Writer必须Close以触发压缩,Reader可直接流式读取,建议封装为通用函数复用。238 收藏 -
答案是使用Golang搭建一个简易问卷系统,通过定义Survey和Response结构体,实现展示问卷、提交回答和查看结果的完整流程。238 收藏 -
必须用backoff.Retry而不是手写for+sleep,因其内置指数退避、jitter、context取消响应、最大耗时控制及状态隔离,避免重试风暴、间隔错乱和忽略取消信号等线上高危问题。238 收藏 -
Go 1.22 调整了 for 循环变量的作用域语义,常见的 goroutine 闭包引用循环变量问题会少很多。本文用代码对比讲清旧写法痛点、新规则、兼容注意和迁移建议。238 收藏 -
golang-migrateCLI需单独安装并配置PATH;迁移文件须严格命名如000001_init.up.sql;Go代码中需显式导入驱动包;URL密码需转义;上线前必须执行validate和version校验。237 收藏 -
必须先开启Redis的notify-keyspace-events配置,设为"Ex"并重启或重写配置,否则无法收到__keyevent@0__:expired等消息;订阅需匹配实际DB编号,使用独立连接、recover防护及幂等处理。237 收藏 -
GoTCP服务端最简流程是net.Listen监听+Accept循环,每个连接需启goroutine处理,否则阻塞;地址格式须含端口如":8080";Read/Write需循环处理,推荐bufio封装;关闭时需WaitGroup协调并发连接并显式closeconn。237 收藏 -
指针类型方法本质是定义在指针类型(如T或typePT)上的方法;值接收者无法修改原始值,指针接收者可修改;Go自动处理取址/解引用,但接口实现和不可寻址值受限。237 收藏 -
Golang · Go教程 | 1个月前 | HTTP · 文件上传 · Go教程 · 资源预算 · multipart · 文件上传 临时文件 ParseMultipartForm multipart Go教程 MaxBytesReader 资源预算
本文用 Go 标准库实现一个更稳的文件上传接口:先限制请求体大小,再控制内存预算和临时文件,最后补上错误提示、超时和清理检查。237 收藏 -
Go中唯一合法的嵌套循环跳出方式是goto配合标签,标签需紧贴for前一行且与goto同函数内,不可跨作用域或跳过变量声明。236 收藏 -
Go中字符串替换需用strings.ReplaceAll(全局替换)或strings.Replace(控制次数,n=-1为全部),因字符串不可变,必须重新赋值;误用str.Replace等错误写法或空分隔符Split会panic。235 收藏 -
GoGin启动HTTPS必须传cert.pem和key.pem两个PEM格式文件,缺一不可;开发可用openssl生成自签名证书,生产需用Let’sEncrypt的fullchain.pem+privkey.pem,并推荐手动构建http.Server以配置超时和TLS版本。235 收藏