```
package main
import (
"fmt"
"reflect"
)
type tabler interface {
TableName() string
}
type model struct{}
func (m model) TableName() string {
return "table_name"
}
func main() {
var mod model
getTableName(mod)
}
/*
reflect.New()函数的声明 func New(typ Type) Value
根据传入的tpye,可以获取到对应的value
*/
func getTableName(v interface{}) {
rt := reflect.TypeOf(v)
rv := reflect.ValueOf(v)
if tabler, ok := rv.Interface().(tabler); ok {
fmt.Println(tabler.TableName())
}
if tabler, ok := reflect.New(rt).Interface().(tabler); ok {
fmt.Println(tabler.TableName())
}
}
```
有疑问加站长微信联系(非本文作者))