go传入不定参数的问题

发布于 2022-09-07 07:29:32 字数 1455 浏览 16 评论 0

问题

使用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,然后报错了

beego文档

clipboard.png

应该是语法上的问题

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

嗼ふ静 2022-09-14 07:29:32

models ...interface{} 语法的参数接收到之后 models 应该是 []interface{}
所以原样传递给 RegisterModel 时 应该 orm.RegisterModel(models...) 这样写

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文