我正在尝试在 Go 中实现以下触发器电路逻辑,并且在变量声明方面遇到了一些困难:
我的目标是模拟逻辑门和电路,因为它可以在物理上工作。我已经为或门 [func nor()] 和触发器本身 [func norFlipFlop()] 实现了一个函数。我面临的问题是声明 out0 和 out1 因为它们相互依赖。如下所示,out0 定义为 nor(a1, out1),out1 定义为 nor(out0, a0)。这显然会吐出一个编译错误,因为在定义 out0 时 out1 尚未初始化和定义。有没有办法让这个逻辑工作,同时尽可能接近物理电路逻辑?
func nor(a int, b int) int {
if a + b == 0 {
return 1
} else {
return 0
}
}
func norFlipFlop(a1 int, a0 int) (int, int) {
out0 := nor(a1, out1)
out1 := nor(out0, a0)
return out1, out0
}
func main() {
out1, out0 := norFlipFlip(1, 1)
out := fmt.Sprint(out1, out0)
fmt.Println(out)
}