Я пытаюсь реализовать следующую логику схемы без триггера в Go и испытываю некоторые трудности с объявлениями переменных:
Моя цель - смоделировать логические вентили и схемы так, как если бы они работали физически. Я реализовал функцию для ворот nor [func nor ()] и самого триггера [func norFlipFlop ()]. Проблема, с которой я столкнулся, заключается в объявлении out0 и out1, поскольку они зависят друг от друга. Как видно ниже, out0 определяется как nor (a1, out1), а out1 определяется как nor (out0, a0). Это, очевидно, вызывает ошибку компиляции, поскольку out1 еще не инициализирован и не определен, когда определен out0. Есть ли способ заставить эту логику работать, максимально приближая ее к логике физической схемы?
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)
}
int
, а неbool
? - person Andrew W. Phillips   schedule 23.05.2020