I’ll give you two options, if
you follow this lesson then you’ll learn about
control flow in programming else
you’ll never know how to control the
execution of your code 💀
Setup
Let’s make our directory if_else
and the files we want inside of
that directory example_test.go
if_else.go
mkdir if_else
touch if_else/example_test.go if_else/if_else.go
Now let’s open up if_else.go
and for the very first line we’ll add
package if_else
Next for example_test.go
for the very first line we’ll add
package if_else_test
We can import basics/if_else
into cmd/main.go
and run functions
from there with go run cmd/main.go
and also to run our example_test.go
👍
we use go test if_else/example_test.go
in the commandline.
If Else Statements
We use if
and else
in programming the same as we use it in real life: if
you eat that piece of cake 🍰 then you’re going to go over your calories for
the day. if
you want to go for a walk 🐕 then you better be a good boy!🐶
if
she doesn’t show up in the next five minutes we’re leaving, else
we can
finally have dinner 🦞 if
it’s too much money💵 we can put it back else
we
got ourselves a new crystal ball! 🔮
Coding Time!
if_else.go
// IfElse shows you how to control the flow of logic in your application using
// if and else statements. It's also good to be aware that there is no ternary
// operator in Go.
func IfElse() {
i := 5
if i < 4 {
fmt.Println("This statement will not be printed.")
}
if i > 4 {
fmt.Println("This statement will print because i > 4 ==", i > 4)
}
if i > 10 {
fmt.Println("This statement will not be printed.")
} else {
fmt.Println("We will always reach and print this statement.")
}
}
example_test.go
func ExampleIfElse() {
if_else.IfElse()
// Output:
// This statement will print because i > 4 == true
// We will always reach and print this statement.
}
Else If
Much like life there are usually more than two options: if
it’s windy 🌬️
outside, I’m going to put on my windbreaker, else if
it’s sunny ☀️ I’m going
to put on my sunglasses 😎 and shorts 🩳 else if
it’s raining 🌧️ I need to
bring my umbrella 🌂 else
it must be freezing so I’ll need a heavy coat 🧥
Coding Time!
if_else.go
// ElseIf shows you that you can branch you logic as many times as you want
// with an `else if` block
func ElseIf() {
i := 8
if i > 8 {
fmt.Println("This statement will not be printed.")
} else if i == 6 {
fmt.Println("This statement will not be printed.")
} else if i == 7 {
fmt.Println("This statement will not be printed.")
} else if i == 8 {
fmt.Println("i == 8 so we will reach into this else if block!")
} else {
fmt.Println("This statement will not be printed.")
}
}
example_test.go
func ExampleElseIf() {
if_else.ElseIf()
// Output:
// i == 8 so we will reach into this else if block!
}
Scoped In If Statement
A really nice feature, Go has is allowing for you to scope your variable
inside of your if
statement. You may wonder 🤔
Why is that a really nice feature?
Good question! Keep ‘em coming 😁 You see, many times in programming we want to take away something called “cognitive burden”. Which is just a fancy way of saying
The less you have to think about, the better.
If you have a file of 60 variables, can you handle that ❓ What about 600 variables ❓ 6,000 variables ⁉️ You can see that the more you have to spend your time thinking on, the less time your coding and the more bugs 🐛 you will produce. How do we solve this? Remove complexity. You know what’s simple? A single variable ☝️ that will not exist after the statement you read. You never have to think about it again. It lives in that one space and nowhere else. It’s a really nice feature and we should definitely take advantage of it in our code when we can.
Coding Time!
if_else.go
// DeclareInIf shows you that if you want your variable to be scoped to just an
// `if` block you can do it in Go!
func DeclareInIf() {
if i := 5; i < 4 {
fmt.Println("This statement will not be printed.")
} else if i == 5 {
fmt.Println("We can reuse i for the entire if-else statement!")
}
// NOTE(jay): Since `i` was declared in the scope of the `if` statement, it doesn't
// exist outside of that scope, so if we uncomment this, we will get an
// error: "Undeclared name: i"
// if i == 5 {
// fmt.Println("This will never work.")
// }
}
example_test.go
func ExampleDeclareInIf() {
if_else.DeclareInIf()
// Output:
// We can reuse i for the entire if-else statement!
}