泛型是Go语言近年来最重要的特性之一,但是,很多开发者在使用泛型时,可能会对其中的某些语法感到困惑。特别是~int这样的写法,常常让人摸不着头脑。究竟这个波浪线~代表什么含义?它为什么存在?它又能为我们带来什么便利?
golang-jwt核心使用jwt.NewWithClaims()生成 Token,jwt.ParseWithClaims()验证解析 Token- 对称加密(HS256)简单高效,适合单服务场景;非对称加密(RS256)更安全,适合跨服务场景
- 自定义载荷必须嵌入
jwt.RegisteredClaims,以支持标准过期时间等核心验证 - 生产环境重点关注密钥安全、过期时间设置和算法验证,避免安全漏洞
entity是 “数据容器”,纯结构体无逻辑,负责承载数据在各层之间流转。do是 “操作工具”,负责构造数据库 CRUD 的条件和赋值,为dao提供支撑。dao是 “访问入口”,封装数据库交互逻辑,对外提供简洁的操作方法,是上层业务与数据库之间的桥梁。- 三者协同工作,实现了数据、操作、访问的分层解耦,是 GoFrame 框架中数据操作的核心最佳实践。
你别看指针听起来吓人,其实在 Go 里它就是——方便、省内存、提高性能、减少数据拷贝… 而且 Go 把它“阉割”得挺狠,根本不像 C 那种能把人吓到怀疑人生的级别。
当你编写一个函数时,返回值应该定义为 T(值)还是 *T(指针)?
这个选择不仅关乎性能(内存分配),更关乎代码的安全性和语义。在这篇文章中,我们将通过 3 个典型的编程场景,为你提供一套清晰的决策框架。
- 使用 Trie 树实现动态路由(dynamic route)解析。
- 支持两种模式
:name和*filepath,代码约150行。
- 将
路由(router)独立出来,方便之后增强。 - 设计
上下文(Context),封装 Request 和 Response ,提供对 JSON、HTML 等返回类型的支持。 - 动手写 Gee 框架的第二天,框架代码140行,新增代码约90行
- 简单介绍
net/http库以及http.Handler接口。 - 搭建
Gee框架的雏形,代码约50行。
大部分时候,我们需要实现一个 Web 应用,第一反应是应该使用哪个框架。不同的框架设计理念和提供的功能有很大的差别。比如 Python 语言的 django和flask,前者大而全,后者小而美。Go语言/golang 也是如此,新框架层出不穷,比如Beego,Gin,Iris等。那为什么不直接使用标准库,而必须使用框架呢?在设计一个框架之前,我们需要回答框架核心为我们解决了什么问题。只有理解了这一点,才能想明白我们需要在框架中实现什么功能。