加载ini格式的配置文件, 支持以;或者#开头的注释
typetestConfstruct{DBstruct{DomainstringPortint`default:"9088"`Enablebool } aaaint } varconftestConfiferr:=LoadConfig(path, &conf); err!=nil{t.Fatalf(errors.ErrorStack(err)) } t.Logf("conf:%+v", conf)配置文件
[db] domain =jd.com enable=true # test comments;port=3306只要传入对应的ini文件全路径及struct指针就可以了,简单高效.
运行结果:
conf:{DB:{Domain:jd.com Port:9088 Enable:true} aaa:0}注意:只会解析有访问权限的变量(大写)
简单高效的HTTP路由,支持指定接口函数,支持自动注册接口
指定接口注册示例:
handler.Server.AddHandler(handler.GET, "/test/", false, onTestGet) handler.Server.AddHandler(handler.POST, "/test/", false, onTestPost) handler.Server.AddHandler(handler.DELETE, "/test/", false, onTestDelete)自动注册接口示例:
//以包名为路径handler.Server.AddInterface(&user{}, "") //指定pathhandler.Server.AddInterface(&user{}, "/api/user/") typeuserstruct{} //DoGet 默认get方法func (u*user) DoGet(w http.ResponseWriter, r*http.Request){w.Write([]byte("Get user")) } //DoPost 默认post方法func (u*user) DoPost(w http.ResponseWriter, r*http.Request){w.Write([]byte("Post user")) }只支持mysql
查询示例
result:=struct{IDint64UserstringPasswordstring }{} iferr=NewStmt(db, "userinfo").Where("id=2").Query(&result); err!=nil{t.Fatal(err.Error()) }修改示例
data:=struct{UserstringPasswordstring }{User: fmt.Sprintf("new_user_%d", time.Now().Unix()), Password: fmt.Sprintf("new_password_%d", time.Now().Unix()), } id, err:=NewStmt(db, "userinfo").Where("id=2").Update(&data) iferr!=nil{t.Fatal(err.Error()) }添加示例
data:=struct{IDint64`db_defult:"auto"`UserstringPasswordstring }{User: fmt.Sprintf("user_%d", time.Now().Unix()), Password: fmt.Sprintf("password_%d", time.Now().Unix()), } id, err:=NewStmt(db, "userinfo").Insert(&data) iferr!=nil{t.Fatal(err.Error()) }