我正在尝试重构一些gorang源代码,我想使用接口,但我发现了巨大的困难(忍受我,我是一个硬核C / C++孤儿)
我提取了一个小样本,显示了我得到的错误
package main
import "fmt"
type LogProcessor interface {
Init() int
}
type MyProcessor struct {
a int
}
func (m MyProcessor) Init() int {
return m.a
}
func main() {
t := &(MyProcessor{2})
var p *LogProcessor = &(MyProcessor{4}) //!!!fails!!!
fmt.Println((*t).Init(), (*p).Init())
}
为什么第二次分配失败?
添加修改后的代码以演示我正在尝试执行的操作。我认为接口更类似于C++类。我的错。仍在学习
package main
import "fmt"
type LogProcessor interface {
Init() int
}
type MyProcessor struct {
a int
}
func (m *MyProcessor) Init() int {
m.a++
return m.a
}
func main() {
t := &(MyProcessor{2})
m := MyProcessor{4}
var p LogProcessor = &m
fmt.Println(t.Init(), p.Init())
fmt.Println(t.a, m.a)
}
杨__羊羊
手掌心
相关分类