【发布时间】:2017-06-21 17:52:06
【问题描述】:
我有两种变量。检查Go playground,我不明白为什么会这样。问题:我从Models 得到的应该是struct 用于GORM First() 功能。
代码:
package main
import (
"fmt"
)
type Test struct {
Test string
}
var Models = map[string]interface{}{
"test": newTest(),
}
func main() {
test1 := Test{}
fmt.Println("Test 1: ")
fmt.Printf("%v", test1)
fmt.Println()
fmt.Println("Test 1 as pointer: ")
fmt.Printf("%v", &test1)
fmt.Println()
test2 := Models["test"]
fmt.Println("Test 2: ")
fmt.Printf("%v", test2)
fmt.Println()
fmt.Println("Test 2 as pointer: ")
fmt.Printf("%v", &test2)
}
func newTest() Test {
var model Test
return model
}
【问题讨论】:
-
您应该在此处粘贴代码。简而言之,
test1的类型为Test,test2的类型为interface{}(也称为空接口)。这是一种不同的类型。 -
@ymonad 是的,我检查过了,但我怎样才能返回正确的结构?
-
当然你可以把
map[string]interface{}改成map[string]Test。但是我想这是XY problem。你有什么具体的问题想解决吗? -
@ymonad 模型数组充满了结构,我总是想返回正确结构的实例。例如,有 300 个结构都代表数据库表,我总是想返回我想要使用的表的实例。
标签: pointers go struct interface formatting