Data Types
Booleans
Booleans hold true or false and drive conditions.
boolean expression
A boolean expression evaluates to `true` or `false`.
Booleans
booleans.go
Replay: real traced execution (multi-file project)
package main
import "fmt"
func main() {
var completed = true
var lessons = 4
ready := completed && lessons >= 3
fmt.Println("completed=", completed)
fmt.Println("lessons=", lessons)
fmt.Println("ready=", ready)
}
package main
import "fmt"
func main() {
var completed = false
var lessons = 4
ready := completed && lessons >= 3
fmt.Println("completed=", completed)
fmt.Println("lessons=", lessons)
fmt.Println("ready=", ready)
}
package main
import "fmt"
func main() {
var completed = true
var lessons = 1
ready := completed && lessons >= 3
fmt.Println("completed=", completed)
fmt.Println("lessons=", lessons)
fmt.Println("ready=", ready)
}
package main
import "fmt"
func main() {
var completed = true
var lessons = 6
ready := completed && lessons >= 3
fmt.Println("completed=", completed)
fmt.Println("lessons=", lessons)
fmt.Println("ready=", ready)
}
completed ← true, lessons ← 4, ready ← true
5func main() {6 var completed→ true = true //@completed=false7 var lessons→ 4 = 4 //@lessons=1, 68 ready→ true := completedtrue && lessons4 >= 3910 fmt.Println("completed=", completedtrue)11 fmt.Println("lessons=", lessons4)12 fmt.Println("ready=", readytrue)13}outputcompleted= true lessons= 4 ready= true
completed ← false, lessons ← 4, ready ← false
5func main() {6 var completed→ false = false7 var lessons→ 4 = 48 ready→ false := completedfalse && lessons4 >= 3910 fmt.Println("completed=", completedfalse)11 fmt.Println("lessons=", lessons4)12 fmt.Println("ready=", readyfalse)13}outputcompleted= false lessons= 4 ready= false
completed ← true, lessons ← 1, ready ← false
5func main() {6 var completed→ true = true7 var lessons→ 1 = 18 ready→ false := completedtrue && lessons1 >= 3910 fmt.Println("completed=", completedtrue)11 fmt.Println("lessons=", lessons1)12 fmt.Println("ready=", readyfalse)13}outputcompleted= true lessons= 1 ready= false
completed ← true, lessons ← 6, ready ← true
5func main() {6 var completed→ true = true7 var lessons→ 6 = 68 ready→ true := completedtrue && lessons6 >= 3910 fmt.Println("completed=", completedtrue)11 fmt.Println("lessons=", lessons6)12 fmt.Println("ready=", readytrue)13}outputcompleted= true lessons= 6 ready= true
Follow the Values
completedstarts astrue.lessonsstarts at4.lessons >= 3is true because4is at least3.ready := completed && lessons >= 3becomestrue.- The program prints
completed= true,lessons= 4, andready= true. | completed | lessons |lessons >= 3| ready | | --- | --- | --- | --- | | false | 4 | true | false | | true | 1 | false | false | | true | 4 | true | true | | true | 6 | true | true |
Exercise: booleans.go
Reproduce ready= true, then use the pinned completed and lessons values to identify when ready becomes false.