鍍金池/ 問(wèn)答/GO  網(wǎng)絡(luò)安全/ go傳入不定參數(shù)的問(wèn)題

go傳入不定參數(shù)的問(wèn)題

問(wèn)題

使用beego框架,注冊(cè)models時(shí),報(bào)錯(cuò):

panic: <orm.RegisterModel> cannot use non-ptr model struct `.`

看描述應(yīng)該是要傳入指針,但是我傳了指針了(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函數(shù)注冊(cè)models,然后報(bào)錯(cuò)了

beego文檔

clipboard.png

應(yīng)該是語(yǔ)法上的問(wèn)題

回答
編輯回答
舊酒館

models ...interface{} 語(yǔ)法的參數(shù)接收到之后 models 應(yīng)該是 []interface{}
所以原樣傳遞給 RegisterModel 時(shí) 應(yīng)該 orm.RegisterModel(models...) 這樣寫

2018年8月19日 00:54