๊ตฌ์กฐ์ฒด๋ฅผ ํฌํจํ๋ interface{}
๋ฅผ ์ด๋ป๊ฒ ์ ๋ฌํด์ผ ํฉ๋๊น? x2์ ์๋ ์๋ํ์ง๋ง x1์ ์๋ ์๋ํ์ง ์์ต๋๋ค. ๊ธฐ๋ฅ์ธ๊ฐ์ ๋ฒ๊ทธ์ธ๊ฐ์? ์ด๋ป๊ฒ ๋ ์ด๊ฒ์ ์ฐํ ํ ์ ์์ต๋๊น?
package extensions
type Foo struct {
Name string
}
func list() {
var x1 interface{} = []Foo{}
x2 := []Foo{}
gormDB.Find(&x1) //unsupported destination, should be slice or struct
gormDB.Find(&x2)
}
package main
import (
_ "github.com/go-sql-driver/mysql"
"github.com/jinzhu/gorm"
)
type Foo struct {
gorm.Model
Name string
}
var db *gorm.DB
func find(v interface{}) {
db.Debug().Find(v)
}
func main() {
var err error
db, err = gorm.Open("mysql", "gorm:gorm@/gorm?charset=utf8&parseTime=True&loc=Local")
if err != nil {
panic(err)
}
db.AutoMigrate(&Foo{})
var x1 = []Foo{}
find(&x1)
}
@jinzhu ์๋
ํ์ธ์, x1
๋ฅผ ๋ฐ์ดํฐ ์ ํ interface{}
๋ก ํ ๋นํ๋ฉด ์๋ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ด์จ๋ ์ฟผ๋ฆฌ์์ ํด๋น ๋ณ์๋ฅผ ๋์ ์ผ๋ก ํ๊ฐํ ์ ์์ต๋๊น?
func main() { var err error db, err = gorm.Open("mysql", "gorm:gorm@/gorm?charset=utf8&parseTime=True&loc=Local") if err != nil { panic(err) } db.AutoMigrate(&Foo{}) var x1 interface{} = []Foo{} find(&x1) // ERROR: unsupported destination, should be slice or struct }
@SherL0cked
find(reflect.ValueOf(x1).Interface())
์๋
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ