GoAdminGroup/go-admin的安装和运行的教程详解
来源:脚本之家
时间:2022-12-31 13:54:34 259浏览 收藏
IT行业相对于一般传统行业,发展更新速度更快,一旦停止了学习,很快就会被行业所淘汰。所以我们需要踏踏实实的不断学习,精进自己的技术,尤其是初学者。今天golang学习网给大家整理了《GoAdminGroup/go-admin的安装和运行的教程详解》,聊聊安装、go-adminAdminGroup,我们一起来看看吧!
使用这个GoAdminGroup/go-admin框架的最简单的例子就可以把项目运行起来 , go-admin 是以扩展库的形式使用的.
建一个main.go
package main import ( "io/ioutil" "log" "os" "os/signal" _ "github.com/GoAdminGroup/go-admin/adapter/gin" _ "github.com/GoAdminGroup/go-admin/modules/db/drivers/mysql" _ "github.com/GoAdminGroup/themes/sword" "github.com/GoAdminGroup/go-admin/engine" "github.com/GoAdminGroup/go-admin/examples/datamodel" "github.com/GoAdminGroup/go-admin/modules/config" "github.com/GoAdminGroup/go-admin/modules/language" "github.com/GoAdminGroup/go-admin/plugins/example" "github.com/GoAdminGroup/go-admin/template" "github.com/GoAdminGroup/go-admin/template/chartjs" "github.com/GoAdminGroup/themes/adminlte" "github.com/gin-gonic/gin" ) func main() { gin.SetMode(gin.ReleaseMode) gin.DefaultWriter = ioutil.Discard r := gin.New() e := engine.Default() cfg := config.Config{ Env: config.EnvLocal, Databases: config.DatabaseList{ "default": { Host: "127.0.0.1", Port: "3306", User: "goadmin", Pwd: "goadmin", Name: "goadmin", MaxIdleCon: 50, MaxOpenCon: 150, Driver: config.DriverMysql, //Driver: config.DriverSqlite, //File: "../datamodel/admin.db", }, }, UrlPrefix: "admin", Store: config.Store{ Path: "./uploads", Prefix: "uploads", }, Language: language.CN, IndexUrl: "/", Debug: true, AccessAssetsLogOff: true, Animation: config.PageAnimation{ Type: "fadeInUp", }, ColorScheme: adminlte.ColorschemeSkinBlack, BootstrapFilePath: "./../datamodel/bootstrap.go", } template.AddComp(chartjs.NewChart()) // customize a plugin examplePlugin := example.NewExample() // load from golang.Plugin // // examplePlugin := plugins.LoadFromPlugin("../datamodel/example.so") // customize the login page // example: https://github.com/GoAdminGroup/demo.go-admin.cn/blob/master/main.go#L39 // // template.AddComp("login", datamodel.LoginPage) // load config from json file // // e.AddConfigFromJSON("../datamodel/config.json") if err := e.AddConfig(cfg). AddGenerators(datamodel.Generators). // add generator, first parameter is the url prefix of table when visit. // example: // // "user" => http://localhost:9033/admin/info/user // AddGenerator("user", datamodel.GetUserTable). AddDisplayFilterXssJsFilter(). AddPlugins(examplePlugin). Use(r); err != nil { panic(err) } r.Static("/uploads", "./uploads") // customize your pages e.HTML("GET", "/admin", datamodel.GetContent) go func() { _ = r.Run(":9033") }() quit := make(chan os.Signal, 1) signal.Notify(quit, os.Interrupt)注意数据库用户名和密码 , 直接运行go run main.go , 在开启go module的情况下 , 所有依赖会自动安装
访问 http://localhost:9033/admin 用户名密码:admin / admin
建一个数据库 , 把数据库sql导进去
# ************************************************************ # Sequel Pro SQL dump # Version 4468 # # http://www.sequelpro.com/ # https://github.com/sequelpro/sequelpro # # Host: 127.0.0.1 (MySQL 5.7.19) # Database: godmin # Generation Time: 2019-09-12 04:16:47 +0000 # ************************************************************ /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; /*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */; /*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */; /*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */; # Dump of table goadmin_menu # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_menu`; CREATE TABLE `goadmin_menu` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `parent_id` int(11) unsigned NOT NULL DEFAULT '0', `type` tinyint(4) unsigned NOT NULL DEFAULT '0', `order` int(11) unsigned NOT NULL DEFAULT '0', `title` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, `icon` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, `uri` varchar(3000) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `header` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `plugin_name` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `uuid` varchar(150) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; LOCK TABLES `goadmin_menu` WRITE; /*!40000 ALTER TABLE `goadmin_menu` DISABLE KEYS */; INSERT INTO `goadmin_menu` (`id`, `parent_id`, `type`, `order`, `title`, `icon`, `uri`, `plugin_name`, `header`, `created_at`, `updated_at`) VALUES (1,0,1,2,'Admin','fa-tasks','','',NULL,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (2,1,1,2,'Users','fa-users','/info/manager','',NULL,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (3,1,1,3,'Roles','fa-user','/info/roles','',NULL,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (4,1,1,4,'Permission','fa-ban','/info/permission','',NULL,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (5,1,1,5,'Menu','fa-bars','/menu','',NULL,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (6,1,1,6,'Operation log','fa-history','/info/op','',NULL,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (7,0,1,1,'Dashboard','fa-bar-chart','/','',NULL,'2019-09-10 00:00:00','2019-09-10 00:00:00'); /*!40000 ALTER TABLE `goadmin_menu` ENABLE KEYS */; UNLOCK TABLES; # Dump of table goadmin_operation_log # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_operation_log`; CREATE TABLE `goadmin_operation_log` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `user_id` int(11) unsigned NOT NULL, `path` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, `method` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL, `ip` varchar(15) COLLATE utf8mb4_unicode_ci NOT NULL, `input` text COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `admin_operation_log_user_id_index` (`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; # Dump of table goadmin_site # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_site`; CREATE TABLE `goadmin_site` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `key` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `value` longtext COLLATE utf8mb4_unicode_ci, `description` varchar(3000) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `state` tinyint(3) unsigned NOT NULL DEFAULT '0', `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; # Dump of table goadmin_permissions # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_permissions`; CREATE TABLE `goadmin_permissions` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, `slug` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, `http_method` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `http_path` text COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `admin_permissions_name_unique` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; LOCK TABLES `goadmin_permissions` WRITE; /*!40000 ALTER TABLE `goadmin_permissions` DISABLE KEYS */; INSERT INTO `goadmin_permissions` (`id`, `name`, `slug`, `http_method`, `http_path`, `created_at`, `updated_at`) VALUES (1,'All permission','*','','*','2019-09-10 00:00:00','2019-09-10 00:00:00'), (2,'Dashboard','dashboard','GET,PUT,POST,DELETE','/','2019-09-10 00:00:00','2019-09-10 00:00:00'); /*!40000 ALTER TABLE `goadmin_permissions` ENABLE KEYS */; UNLOCK TABLES; # Dump of table goadmin_role_menu # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_role_menu`; CREATE TABLE `goadmin_role_menu` ( `role_id` int(11) unsigned NOT NULL, `menu_id` int(11) unsigned NOT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, KEY `admin_role_menu_role_id_menu_id_index` (`role_id`,`menu_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; LOCK TABLES `goadmin_role_menu` WRITE; /*!40000 ALTER TABLE `goadmin_role_menu` DISABLE KEYS */; INSERT INTO `goadmin_role_menu` (`role_id`, `menu_id`, `created_at`, `updated_at`) VALUES (1,1,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (1,7,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (2,7,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (1,8,'2019-09-11 10:20:55','2019-09-11 10:20:55'), (2,8,'2019-09-11 10:20:55','2019-09-11 10:20:55'); /*!40000 ALTER TABLE `goadmin_role_menu` ENABLE KEYS */; UNLOCK TABLES; # Dump of table goadmin_role_permissions # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_role_permissions`; CREATE TABLE `goadmin_role_permissions` ( `role_id` int(11) unsigned NOT NULL, `permission_id` int(11) unsigned NOT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY `admin_role_permissions` (`role_id`,`permission_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; LOCK TABLES `goadmin_role_permissions` WRITE; /*!40000 ALTER TABLE `goadmin_role_permissions` DISABLE KEYS */; INSERT INTO `goadmin_role_permissions` (`role_id`, `permission_id`, `created_at`, `updated_at`) VALUES (1,1,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (1,2,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (2,2,'2019-09-10 00:00:00','2019-09-10 00:00:00'); /*!40000 ALTER TABLE `goadmin_role_permissions` ENABLE KEYS */; UNLOCK TABLES; # Dump of table goadmin_role_users # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_role_users`; CREATE TABLE `goadmin_role_users` ( `role_id` int(11) unsigned NOT NULL, `user_id` int(11) unsigned NOT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY `admin_user_roles` (`role_id`,`user_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; LOCK TABLES `goadmin_role_users` WRITE; /*!40000 ALTER TABLE `goadmin_role_users` DISABLE KEYS */; INSERT INTO `goadmin_role_users` (`role_id`, `user_id`, `created_at`, `updated_at`) VALUES (1,1,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (2,2,'2019-09-10 00:00:00','2019-09-10 00:00:00'); /*!40000 ALTER TABLE `goadmin_role_users` ENABLE KEYS */; UNLOCK TABLES; # Dump of table goadmin_roles # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_roles`; CREATE TABLE `goadmin_roles` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, `slug` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `admin_roles_name_unique` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; LOCK TABLES `goadmin_roles` WRITE; /*!40000 ALTER TABLE `goadmin_roles` DISABLE KEYS */; INSERT INTO `goadmin_roles` (`id`, `name`, `slug`, `created_at`, `updated_at`) VALUES (1,'Administrator','administrator','2019-09-10 00:00:00','2019-09-10 00:00:00'), (2,'Operator','operator','2019-09-10 00:00:00','2019-09-10 00:00:00'); /*!40000 ALTER TABLE `goadmin_roles` ENABLE KEYS */; UNLOCK TABLES; # Dump of table goadmin_session # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_session`; CREATE TABLE `goadmin_session` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `sid` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `values` varchar(3000) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; # Dump of table goadmin_user_permissions # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_user_permissions`; CREATE TABLE `goadmin_user_permissions` ( `user_id` int(11) unsigned NOT NULL, `permission_id` int(11) unsigned NOT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY `admin_user_permissions` (`user_id`,`permission_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; LOCK TABLES `goadmin_user_permissions` WRITE; /*!40000 ALTER TABLE `goadmin_user_permissions` DISABLE KEYS */; INSERT INTO `goadmin_user_permissions` (`user_id`, `permission_id`, `created_at`, `updated_at`) VALUES (1,1,'2019-09-10 00:00:00','2019-09-10 00:00:00'), (2,2,'2019-09-10 00:00:00','2019-09-10 00:00:00'); /*!40000 ALTER TABLE `goadmin_user_permissions` ENABLE KEYS */; UNLOCK TABLES; # Dump of table goadmin_users # ------------------------------------------------------------ DROP TABLE IF EXISTS `goadmin_users`; CREATE TABLE `goadmin_users` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `username` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, `password` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT '', `name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL, `avatar` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `remember_token` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `updated_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `admin_users_username_unique` (`username`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; LOCK TABLES `goadmin_users` WRITE; /*!40000 ALTER TABLE `goadmin_users` DISABLE KEYS */; INSERT INTO `goadmin_users` (`id`, `username`, `password`, `name`, `avatar`, `remember_token`, `created_at`, `updated_at`) VALUES (1,'admin','$2a$10$U3F/NSaf2kaVbyXTBp7ppOn0jZFyRqXRnYXB.AMioCjXl3Ciaj4oy','admin','','tlNcBVK9AvfYH7WEnwB1RKvocJu8FfRy4um3DJtwdHuJy0dwFsLOgAc0xUfh','2019-09-10 00:00:00','2019-09-10 00:00:00'), (2,'operator','$2a$10$rVqkOzHjN2MdlEprRflb1eGP0oZXuSrbJLOmJagFsCd81YZm0bsh.','Operator','',NULL,'2019-09-10 00:00:00','2019-09-10 00:00:00'); /*!40000 ALTER TABLE `goadmin_users` ENABLE KEYS */; UNLOCK TABLES; /*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */; /*!40101 SET SQL_MODE=@OLD_SQL_MODE */; /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;总结
理论要掌握,实操不能落!以上关于《GoAdminGroup/go-admin的安装和运行的教程详解》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!
声明:本文转载于:脚本之家 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
-
318 收藏
-
358 收藏
-
186 收藏
-
269 收藏
-
275 收藏
最新阅读
更多>
-
233 收藏
-
322 收藏
-
181 收藏
-
316 收藏
-
244 收藏
-
300 收藏
课程推荐
更多>
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 542次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 507次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 497次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 484次学习
评论列表
-
- 神勇的导师
- 太全面了,收藏了,感谢大佬的这篇技术贴,我会继续支持!
- 2023-03-17 07:05:39
-
- 有魅力的吐司
- 这篇文章出现的刚刚好,细节满满,真优秀,mark,关注博主了!希望博主能多写Golang相关的文章。
- 2023-03-04 10:33:24
-
- 沉默的硬币
- 受益颇多,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢作者大大分享技术贴!
- 2023-02-10 21:27:36
-
- 震动的棉花糖
- 很详细,码起来,感谢up主的这篇技术贴,我会继续支持!
- 2023-02-10 13:47:16
-
- 忧心的大地
- 这篇博文太及时了,太详细了,真优秀,码住,关注up主了!希望up主能多写Golang相关的文章。
- 2023-01-26 12:23:09
-
- 震动的诺言
- 这篇文章出现的刚刚好,太细致了,太给力了,mark,关注博主了!希望博主能多写Golang相关的文章。
- 2023-01-24 20:00:18
-
- 大气的汽车
- 很有用,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢大佬分享文章!
- 2023-01-23 14:16:46
-
- 明亮的御姐
- 写的不错,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢up主分享文章内容!
- 2023-01-20 15:56:53
-
- 眼睛大的战斗机
- 细节满满,码起来,感谢楼主的这篇技术文章,我会继续支持!
- 2023-01-15 07:37:22
-
- 霸气的金毛
- 很有用,一直没懂这个问题,但其实工作中常常有遇到...不过今天到这,帮助很大,总算是懂了,感谢大佬分享技术文章!
- 2023-01-05 12:12:53
-
- 淡定的帅哥
- 这篇文章真及时,细节满满,很有用,已收藏,关注up主了!希望up主能多写Golang相关的文章。
- 2023-01-04 03:03:25
-
- 激动的乐曲
- 这篇文章太及时了,师傅加油!
- 2023-01-01 11:30:04