GoFrame Admin 是一个基于 Go 语言的开源后台管理系统,它提供了一套完整的后台管理功能,包括用户管理、角色权限、菜单管理、日志管理、文件上传下载、图表展示、API 管理以及其他常用功能。
GoFrame Admin 使用 Go 语言开发,采用 MVC 架构,支持多数据库(MySQL/PostgreSQL/SQLite/MSSQL)。它还集成了很多常用的前端库和框架,如 Bootstrap、jQuery 和 Vue.js 等。此外,GoFrame Admin 还有一个强大的代码生成器,可以快速生成 CRUD 页面和 API 接口。
package main import ( "github.com/gogf/gf/frame/g" "github.com/gogf/gf/net/ghttp" ) func main() { s := g.Server() // 加载 GoFrame Admin 后台管理面板 s.BindHandler("/admin", func(r *ghttp.Request) { r.Response.WriteTpl("admin.html", nil) }) s.SetPort(8199) s.Run() }
gcmd
组件提供了常用的基础包方法,可以按照默认的解析规则,直接获取命令行参数及选项。
更多组件方法请参考接口文档:https://pkg.go.dev/github.com/gogf/gf/v2/os/gcmd
func Init(args ...string)
func GetArg(index int, def ...string) *gvar.Var
func GetArgAll() []string
func GetOpt(name string, def ...string) *gvar.Var
func GetOptAll() map[string]string
默认情况下,gcmd
组件会自动从os.Args
解析获取参数及数据。我们可以通过Init
方法自定义命令行数据。使用示例:
func ExampleInit() {
gcmd.Init("gf", "build", "main.go", "-o=gf.exe", "-y")
fmt.Printf(`%#v`, gcmd.GetArgAll())
// Output:
// []string{"gf", "build", "main.go"}
}
参数获取可以通过以下两个方法:
GetArg
方法用以获取默认解析的命令行参数,参数通过输入索引位置获取,索引位置从0
开始,但往往我们需要获取的参数是从1
开始,因为索引0
的参数是程序名称。
GetArgAll
方法用于获取所有的命令行参数。
使用示例:
func ExampleGetArg() {
gcmd.Init("gf", "build", "main.go", "-o=gf.exe", "-y")
fmt.Printf(
`Arg[0]: "%v", Arg[1]: "%v", Arg[2]: "%v", Arg[3]: "%v"`,
gcmd.GetArg(0), gcmd.GetArg(1), gcmd.GetArg(2), gcmd.GetArg(3),
)
// Output:
// Arg[0]: "gf", Arg[1]: "build", Arg[2]: "main.go", Arg[3]: ""
}
func ExampleGetArgAll() {
gcmd.Init("gf", "build", "main.go", "-o=gf.exe", "-y")
fmt.Printf(`%#v`, gcmd.GetArgAll())
// Output:
// []string{"gf", "build", "main.go"}
}
选项获取可以通过以下两个方法:
GetOpt
方法用以获取默认解析的命令行选项,选项通过名称获取,并且选项的输入没有顺序性,可以输入到任意的命令行位置。当给定名称的选项数据不存在时,返回nil
。注意判断不带数据的选项是否存在时,可以通过GetOpt(name) != nil
方式。
GetOptAll
方法用于获取所有的选项。
使用示例:
func ExampleGetOpt() {
gcmd.Init("gf", "build", "main.go", "-o=gf.exe", "-y")
fmt.Printf(
`Opt["o"]: "%v", Opt["y"]: "%v", Opt["d"]: "%v"`,
gcmd.GetOpt("o"), gcmd.GetOpt("y"), gcmd.GetOpt("d", "default value"),
)
// Output:
// Opt["o"]: "gf.exe", Opt["y"]: "", Opt["d"]: "default value"
}
func ExampleGetOptAll() {
gcmd.Init("gf", "build", "main.go", "-o=gf.exe", "-y")
fmt.Printf(`%#v`, gcmd.GetOptAll())
// May Output:
// map[string]string{"o":"gf.exe", "y":""}
}
func GetOptWithEnv(key string, def ...interface{}) *gvar.Var
该方法用于获取命令行中指定的选项数值,如果该选项不存在时,则从环境变量中读取。但是两者的名称规则会不一样。例如:gcmd.GetOptWithEnv("gf.debug")
将会优先去读取命令行中的gf.debug
选项,当不存在时,则会去读取GF_DEBUG
环境变量。
需要注意的是参数命名转换规则:
.
字符转换为_
字符。
_
字符转换为.
字符。
使用示例:
func ExampleGetOptWithEnv() {
fmt.Printf("Opt[gf.test]:%sn", gcmd.GetOptWithEnv("gf.test"))
_ = genv.Set("GF_TEST", "YES")
fmt.Printf("Opt[gf.test]:%sn", gcmd.GetOptWithEnv("gf.test"))
// Output:
// Opt[gf.test]:
// Opt[gf.test]:YES
}
基本介绍框架提供了默认的错误码组件gcode,错误码使用接口化设计,以实现高扩展性。接口定义// Code is universal error co...
gvalid校验组件支持强大的递归校验特性。如果给定的校验数据中的属性或者键值为struct/map/slice类型时,将会被自动执行...
一、OpenTelemetry分布式链路跟踪(DistributedTracing)的概念最早是由Google提出来的,发展至今技术已经比较成熟,也...
一、基本介绍我们都知道,开发业务项目离不开数据库操作组件的使用,数据库是绝大部分业务项目的核心,这也是"CRUD工程师"戏称的...
基本介绍数组容器,提供普通数组,及排序数组,支持数据项唯一性矫正,支持并发安全开关控制。使用场景:数组操作。使用方式:im...
基础使用package mainimport ("fmt""github.com/gogf/gf/v2/container/glist")func main() {// Not concurrent-safe in default....
基本使用package mainimport ("fmt""github.com/gogf/gf/v2/container/gtree""github.com/gogf/gf/v2/util/gutil")func main() {...
时间对象创建gtime.Time对象可以通过标准库time.Time对象、Unix时间戳、时间字符串(如:2018-07-1812:01:00)...
现在让我们进入交互式 Python 命令行,尝试一下 Django 为你创建的各种 API。通过以下命令打开 Python 命令行:... py manage.py...