Go 入门:Cookie、Session 和一个简单登录状态
登录状态是 Web 开发绕不开的话题。很多初学者一听到 Session,就会把它想成某种神秘机制。其实从 HTTP 角度看,Cookie 是浏览器保存并自动带回服务端的一小段数据;Session 是服务端用这段数据找到用户状态的一种做法。Cookie 在客户端,Session 数据通常在服务端。
posts
登录状态是 Web 开发绕不开的话题。很多初学者一听到 Session,就会把它想成某种神秘机制。其实从 HTTP 角度看,Cookie 是浏览器保存并自动带回服务端的一小段数据;Session 是服务端用这段数据找到用户状态的一种做法。Cookie 在客户端,Session 数据通常在服务端。
用报表下载接口讲 http.ServeContent 的基本用法,包括文件名、Content-Type、修改时间、Range 请求和权限检查。
很多人第一次写 Go 程序,是从一个 HTTP 服务开始。但在真实团队里,命令行小工具同样常见:清理过期文件、导入一批 CSV、生成报表、检查接口是否可用。小工具看起来简单,最容易写成“先能跑再说”的样子:路径写死在代码里,超时时间散落在函数里,出了错只打印一行“failed”。等这个工具被同事拿去每天跑,问题就来了。
Go 1.25 即将到来,带来后量子密码学 crypto/mlkem、Profile-Guided Optimization 增强、net/http 中间件支持、工具链与 go work 改进,以及一系列性能优化。本文带你抢先预览这些激动人心的特性。
很多 Go 初学者会给 HTTP handler 写测试,却不知道怎么给 HTTP 客户端写测试。比如你的服务要调用一个用户中心接口,代码里有 、URL、请求头和 JSON 解码。测试时不可能真的去调用线上用户中心,也不应该为了单元测试启动一整套依赖。标准库里的 提供了一个很实用的工具: 。
🗺️ Go 语言学习路线图 欢迎来到 Go 语言的学习之旅!本系列包含 100 篇 精心编写的教程文章,涵盖从基础语法到前沿技术的完整知识体系。这份学习路线图将帮助你: - 🎯 根据你的目标选择合适的学习路径 - 📚 了解文章之间的依赖关系 - ⏱️ 估算每个阶段所需的时间 - 🚀 避免常见的学习误区 如果你已经...
用预约提醒场景讲 Go 中 UTC 存储、本地时区展示、time.LoadLocation、ParseInLocation 和跨时区测试。
配置是后端服务里最容易被低估的部分。初学者常常先把端口、数据库地址、超时时间写死在代码里,等部署到不同环境时再匆忙改成环境变量。结果是默认值散落各处,启动时不校验,线上才发现某个配置拼错了。一个清楚的配置系统不一定复杂。
能跑和敢交付之间还有一段路 很多 Go 小项目写到最后, 能跑,接口也能返回结果,于是就想直接上线或交给别人使用。可是真正交付前,还应该做一轮基础检查:测试是否通过,代码是否格式化,构建是否可复现,配置是否清楚,日志是否足够,外部调用是否有超时,错误是否会泄露敏感信息,README 是否告诉别人怎么运行。
Go 项目实战:从零构建完整的 Web 应用 学了这么多 Go 的理论和零散的知识点,是时候来一个完整的项目实战了。今天,我们将从零开始构建一个真实的项目—— 在线任务管理系统(TaskMaster) 。
本文用一个小型任务 API 讲解 Go 项目中轻量分层的做法,说明 Handler、Service、Store 的职责边界和避免过度设计的方法。
很多初学者一听到“单元测试”,就想到 mock 框架。其实 Go 里最常用、最舒服的测试替身,往往只是一个小结构体。你定义一个刚好够用的小接口,测试里手写 fake 或 spy,就能验证业务逻辑,而不用真的发邮件、调支付或连外部 API。
日志是排查问题的基础,但日志也很容易泄露敏感信息。密码、验证码、session ID、访问 token、身份证号、银行卡号、完整手机号,如果进入日志系统,就可能被更多人看到,也很难彻底删除。初学者常见错误是为了调试方便,把整个请求体或结构体直接打印出来。
有些函数的输出很长,比如生成 Markdown、渲染配置文件、格式化 JSON、生成 SQL。你当然可以在测试里写一个很长的字符串常量,但测试文件会变得难读。黄金文件测试,也叫 golden file test,就是把期望输出放在单独文件里,测试时读取文件并比较。
Go 与区块链:从概念到实现 区块链,这个听起来很神秘的技术,其实核心思想非常简单: 去中心化的、不可篡改的数据账本 。你可能听说过比特币、以太坊,但你知道区块链的底层原理吗? 今天,我们将用 Go 语言从零开始构建一个简单的区块链系统,深入理解区块链的核心概念:区块、哈希、工作量证明、交易、钱包和 P2P 网络。
中间件本质上是在包装 Handler Go 的 HTTP handler 是: 中间件就是接收一个 handler,返回一个新的 handler。新 handler 可以在调用原 handler 前后做事情,比如记录日志、恢复 panic、检查登录状态、加请求 ID、统计耗时、设置响应头。
主要更新内容 Go 1.23 版本带来了许多新特性和改进,以下是一些重点更新: 1.用户定义的迭代器 :Go 1.23 支持了用户定义的迭代器,这意味着你可以创建自定义的迭代行为。例如,你可以使用 这样的函数来定义一个迭代器,这为处理任意序列提供了可能。
Go 有了泛型以后,很多人第一反应是写集合库。虽然实际项目里不要急着造大而全的数据结构库,但写一个小 和 很适合理解泛型:类型参数怎么写, 是什么,方法接收者怎么设计,零值能不能直接用。本文不追求覆盖所有集合,只用两个例子讲入门时最常见的判断。
创建接口比较简单,用户提交什么就创建什么。更新接口尤其是部分更新,会遇到一个麻烦问题:字段没提交、提交空字符串、提交 ,这三件事含义可能不同。比如昵称没提交表示不改,提交空字符串表示设置为空字符串,提交 表示清空昵称。
面向 Go 初学者介绍 Go 1.23 range over func 的基本写法、适用场景、与切片返回的取舍,以及如何避免过度设计。