GoFrame 是一个开源的、高性能的 Web 开发框架,它是基于 Go 语言编写的,由国内开发者维护。GoFrame 提供了一套完整的解决方案,可以帮助开发者快速构建出高性能、高可用性的 Web 应用。GoFrame 的特点是简单易用、高性能、易扩展,它也是目前国内最流行的 Go 语言 Web 框架之一。
GoFrame 的教程主要分为三部分:入门教程、进阶教程和实战教程。入门教程介绍了 GoFrame 的基本使用方法,包括如何安装 GoFrame 、如何创建应用、如何使用路由、如何使用中间件以及如何使用日志功能。进阶教程介绍了 GoFrame 的进阶功能,包括如何使用 ORM 、如何使用 Redis 、如何使用 MongoDB 以及如何使用 RabbitMQ 等。实战教程则是通过一个实战项目来帮助开发者学习 GoFrame ,包含了前端开发、后端开发以及部署上线三个部分。
package main import ( "github.com/gogf/gf/frame/g" ) func main() { // 初始化应用对象并启动应用服务(HTTP/HTTPS/TCP/UDP/GRPC) g.Server().Run() // 停止应用服务并释放资源(会释放所有已波波外郎的资源) defer g.Server().Shutdown() // 运行应该逻辑代码... // 阻塞当前 goroutine (不会释放已波波外郎的资源) select {} // or g.Wait() or g.Cron().Run() or g.Tick().Run()... etc. // 非必要代码 // 非必要代码 // 非必要代码 // 非必要代GoFrame 工具方法-gutil
基本介绍
gutil
组件封装了一些开发中常用的工具方法。使用方式:
import "github.com/gogf/gf/v2/util/gutil"
接口文档:
https://pkg.go.dev/github.com/gogf/gf/v2/util/gutil
常用方法
Dump
- 说明:
Dump
将values
以更好的可读性的方式输出在标准输出中。- 格式:
Dump(values ...interface{})
- 示例:
type User struct { Name string Age int } type Location struct { Province string City string } type UserInfo struct { U User L Location } func main() { userList := make([]UserInfo, 0) userList = append(userList, UserInfo{ U: User{ Name: "郭强", Age: 18, }, L: Location{ Province: "四川", City: "成都", }, }) userList = append(userList, UserInfo{ U: User{ Name: "黄骞", Age: 18, }, L: Location{ Province: "江苏", City: "南京", }, }) gutil.Dump(userList) } // Output: [ { U: { Name: "郭强", Age: 18, }, L: { Province: "四川", City: "成都", }, }, { U: { Name: "黄骞", Age: 18, }, L: { Province: "江苏", City: "南京", }, }, ]
DumpWithType
- 说明:
DumpWithType
和 Dump
类似,但是多了类型信息。- 格式:
DumpWithType(values ...interface{})
- 示例:
type User struct { Name string Age int } type Location struct { Province string City string } type UserInfo struct { U User L Location } func main() { userList := make([]UserInfo, 0) userList = append(userList, UserInfo{ U: User{ Name: "郭强", Age: 18, }, L: Location{ Province: "四川", City: "成都", }, }) userList = append(userList, UserInfo{ U: User{ Name: "黄骞", Age: 18, }, L: Location{ Province: "江苏", City: "南京", }, }) gutil.DumpWithType(userList) } // Output: []main.UserInfo(2) [ main.UserInfo(2) { U: main.User(2) { Name: string(6) "郭强", Age: int(18), }, L: main.Location(2) { Province: string(6) "四川", City: string(6) "成都", }, }, main.UserInfo(2) { U: main.User(2) { Name: string(6) "黄骞", Age: int(18), }, L: main.Location(2) { Province: string(6) "江苏", City: string(6) "南京", }, }, ]
DumpTo
- 说明:
DumpTo
将value
以自定义的输出形式写入到write
中。- 格式:
DumpTo(writer io.Writer, value interface{}, option DumpOption)
- 示例:
package main import ( "bytes" "fmt" "github.com/gogf/gf/v2/util/gutil" "io" ) type UserInfo struct { Name string Age int Province string City string } type DumpWriter struct { Content string } func (d *DumpWriter) Write(p []byte) (n int, err error) { buffer := bytes.NewBuffer(nil) buffer.WriteString("I"m Start!n") buffer.WriteString(string(p)) buffer.WriteString("nI"m End!n") d.Content = buffer.String() return buffer.Len(), nil } func main() { u := UserInfo{ "a", 18, "b", "c", } var dw io.Writer = &DumpWriter{} gutil.DumpTo(dw, u, gutil.DumpOption{}) fmt.Println(dw.(*DumpWriter).Content) } // Output: I"m Start! { Name: "a", Age: 18, Province: "b", City: "c", } I"m End!
GoFrame框架支持全自动化的接口文档生成,保障代码与接口文档同步维护,自动生成的接口文档采用的是标准的OpenAPIv3协议...
GoFrame框架的WebServer配置管理非常方便,支持多种配置方式以及若干配置方法。配置对象配置对象定义:https://pkg.go.d...
Tornado提供了一个具有异步功能的简单Web框架,允许它扩展到大量打开的连接,使其成为长轮询的理想选择。这是一个简单的“Hello,...
在深入研究依赖注入系统之前,让我们升级前面的例子。来自上一个示例的一个字典在前面的示例中,我们dict从我们的依赖项(“可靠...
除了改变数据库架构外,你还可以使用迁移来改变数据库本身的数据,如果你想的话,还可以结合架构来改变。更改数据的迁移通常称为...
当使用 unique() 或 db_index 的列来检索单个对象时,有两个原因。首先,由于底层数据库索引的存在,查询的速度会更快。...
添加额外的 Manager 方法一般是为模型添加 “表级” 功能的更好方法。(对于 “行级” 功能 —— 即,只操作单个模型对象 —...
自动导入 MyBatis-Plus 测试所需相关配置,通过 @MybatisPlusTest 注解快速配置测试类。添加测试依赖Maven:dependencygroup...