显然,我想根据函数参数(getOccupationStructs 函数)返回一个结构数组,以保持 DRY (不在所有其他函数中使用 if else ),但这似乎不可能,所以这是我的错误:
cannot use []Student literal (type []Student) as type []struct {} in
return argument
cannot use []Employee literal (type []Employee ) as type []struct {} in
return argument
这是我的代码:
package main
import (
"fmt"
"time"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/postgres"
)
type Human struct {
ID uint `gorm:"primary_key" gorm:"column:_id" json:"_id"`
Name string `gorm:"column:name" json:"name"`
Age int `gorm:"column:age" json:"age"`
Phone string `gorm:"column:phone" json:"phone"`
}
type Student struct {
Human
School string `gorm:"column:school" json:"school"`
Loan float32 `gorm:"column:loan" json:"loan"`
}
type Employee struct {
Human
Company string `gorm:"column:company" json:"company"`
Money float32 `gorm:"column:money" json:"money"`
}
func getOccupationStructs(occupation string) []struct{} {
switch occupation {
case "student":
return []main.Student{}
case "employee":
return []main.Employee{}
default:
return []main.Student{}
}
}
func firstFunction(){
m := getOccupationStructs("student")
for _, value := range m{
fmt.Println("Hi, my name is "+value.Name+" and my school is "+value.School)
}
}
func secondFunction(){
m := getOccupationStructs("employee")
for _, value := range m{
fmt.Println("Hi, my name is "+value.Name+" and my company is "+value.Company)
}
}
是否有任何有效的解决方法来解决这个问题?
www说
翻阅古今
随时随地看视频慕课网APP
相关分类