这里有一些代码,但它太长而且没必要。 有时我需要写一些东西给mysql, 有某种类似的表。
我一直尝试使用interface {},但它更复杂。
有没有办法缩短它?
type One struct{
Id int
Name String
Status bool
Devtype string
...
Created time.Time
}
type Two struct{
Id int
Name String
Status bool
Devtype string
...
Created time.Time
}
type Three struct{
Id int
Name String
Status bool
Devtype string
...
Created time.Time
}
func Insert(devtype string){
if devtype == "one"{
var value One
value.Id = 1
value.Name = "device"
value.Status = false
value.Devtype = devtype //only here is different
value.Created = time.Now()
fmt.Println(value)
}else if devtype == "two"{
var value Two
value.Id = 1
value.Name = "device"
value.Status = false
value.Devtype = devtype //only here is different
value.Created = time.Now()
fmt.Println(value)
}else if devtype == "three"{
var value Three
value.Id = 1
value.Name = "device"
value.Status = false
value.Devtype = devtype //only here is different
value.Created = time.Now()
fmt.Println(value)
}
}
答案 0 :(得分:1)
golang的struct inherit将有助于此
type Base struct {
Id int
Name String
Status bool
...
Created time.Time
}
type One struct{
Base
Devtype string
}
type Two struct{
Base
Devtype string
}
type Three struct{
Base
Devtype string
}
func Insert(devtype string, base Base){
switch devtype {
case "one"
var value One
value.Base = base
value.Devtype = devtype //only here is different
case "two"
var value Two
value.Base = base
value.Devtype = devtype //only here is different
case "three"
var value Three
value.Base = base
value.Devtype = devtype //only here is different
}
}
PS:因为只有一个字段不同,所以创建三种类型
并不是一个好习惯