go传入不定参数的问题
问题
使用beego框架,注册models时,报错:
panic: <orm.RegisterModel> cannot use non-ptr model struct `.`
看描述应该是要传入指针,但是我传了指针了(new)
main.go
package db
import (
"github.com/astaxie/beego/orm"
)
func InitDB(models ...interface{}) {
orm.RegisterDriver("mysql", orm.DRMySQL)
// set default database
orm.RegisterDataBase("default", "mysql", "root:*****@tcp(127.0.0.1:3306)/db_test?charset=utf8", 30)
// register model
orm.RegisterModel(models)
// create table
orm.RunSyncdb("default", false, true)
}
db/main.go
package db
import (
"github.com/astaxie/beego/orm"
)
func InitDB(models ...interface{}) {
orm.RegisterDriver("mysql", orm.DRMySQL)
// set default database
orm.RegisterDataBase("default", "mysql", "root:123456@tcp(127.0.0.1:3306)/db_test?charset=utf8", 30)
// register model
orm.RegisterModel(models)
// create table
orm.RunSyncdb("default", false, true)
}
models/user.go
package models
import "hello/db"
type User struct {
Uid int `orm:"pk"`
Username string
Password string
}
db/main.go中的InitDB函数注册models,然后报错了
应该是语法上的问题
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
models ...interface{} 语法的参数接收到之后 models 应该是 []interface{}
所以原样传递给 RegisterModel 时 应该 orm.RegisterModel(models...) 这样写