我想通过Process界面中实现的Read和Write方法读取,提取和保存来自不同来源的数据 该代码在第一个example:
中运行得非常严谨type Process interface {
Read()
write() string
}
type Nc struct {
data string
}
type Ctd Nc
type Btl Nc
func (nc *Ctd) Read() {
nc.data = "CTD"
}
func (nc *Ctd) Write() string {
return nc.data
}
func (nc *Btl) Read() {
nc.data = "BTL"
}
func (nc *Btl) Write() string {
return nc.data
}
func main() {
var ctd = new(Ctd)
var btl= new(Btl)
ctd.Read()
btl.Read()
fmt.Println(ctd.Write())
fmt.Println(btl.Write())
}
现在,我想从文件中动态读取数据,方法get_config应该返回一个我希望在switch块中处理的常量类型:
func main() {
// bitMask = get_config()
bitMask := 1
// or bitmask := 2
var nc = new(Nc)
switch bitMask {
case 1:
nc = Ctd(nc)
case 2:
nc = Btl(nc)
}
nc.Read()
fmt.Println(nc.Write())
}
我不知道如何在开关块外面用rigth类型声明nc
谢谢,
答案 0 :(得分:0)
在接口中,方法write
是小写的,因此它是私有的。结构Ctd和Btl没有实现这个接口,因为它们有Write
方法大写。
所以:
type Process interface {
Read()
Write() string
}
....
func main() {
bitMask := 2
// or bitMask := 2
var nc Process
switch bitMask {
case 1:
nc = &Ctd{}
case 2:
nc = &Btl{}
}
nc.Read()
fmt.Println(nc.Write())
}