I'm new to Golang. I understand the basics of defining new types like below:
type MyCondition bool
I know this implies that whenever I state a function takes an instance of MyCondition
it cannot be a bool
, and that's great. However, I would like to treat an instance of MyCondition
as if it was a bool
, and I've found I can't always do that:
package main
import (
"fmt"
)
type MyCondition bool
func main() {
var b1 MyCondition
var b2 = true
fmt.Println(!b1) // OK!
fmt.Println(b1 || b1) // OK
fmt.Println(b1 || b2)
}
This doesn't compile, throwing:
./prog.go:13:17: invalid operation: b1 || b2 (mismatched types MyCondition and bool)
From what I've observed, MyCondition
works as a bool on its own, but the problem occurs when I "mix" it with an actual bool
.
Questions are:
- Why does this happen?
- What's a workaround for this? I'd really like to treat it like a bool without the need of casting, polymorphically.