1, create new project “test6_condition”
$ cd ~/project
$ mkdir test6_condition
$ cd test6_condition
$ touch condition.go
2,add following lines in “condition.go”
package main
import (
"fmt"
"math"
)
func main() {
// TEST 1, regular for loop
forCase1()
// TEST 2, no initial or post statement
forCase2()
// TEST 3, for loop works as while
forCase3()
// TEST 4, infinite loop
forCase4()
// TEST 5, if condition
ifCase1(2.0, 3.0) //ifCase1(2.0, -3.0)
// TEST 6, integrate for & if
calculateSqrt(3.0)
// TEST 7, switch case
switchCase()
// TEST 8, defer
deferCase()
}
func forCase1() {
var sum int = 0
for i := 0; i < 7; i++ {
sum = sum + i
fmt.Println("i =", i, ",sum =", sum)
}
}
func forCase2() {
var sum int = 0
for ; sum < 9; {
sum = sum + 2
fmt.Println("case 2, sum =", sum)
}
}
func forCase3() {
var sum int = 0
for sum < 80 {
sum = sum + 15
fmt.Println("case 3, sum =", sum)
}
}
func forCase4() {
var sum int = 0
for {
sum = sum + 7
fmt.Println("case 4, sum =", sum)
if (sum > 30) {
break
}
}
}
func ifCase1(a, b float64) {
if r := math.Pow(a, b); r < 1.0 {
fmt.Printf("pow(%f, %f) = %f < 1.0\n", a, b, r)
} else {
fmt.Printf("pow(%f, %f) = %f >= 1.0\n", a, b, r)
}
}
func calculateSqrt(a float64) {
var limit float64 = 10e-3
var x1, x2 float64 = 10.0, 10.0
var offset float64 = 0.0
for {
x2 = 0.5 * (x1 + a / x1)
offset = math.Abs(x2*x2 - a)
if offset < limit {
fmt.Println("result of sqrt() =", x2, offset)
break
} else {
fmt.Println("try", x2, "for sqrt()")
x1 = x2
}
}
}
func switchCase() {
var a int = 9
switch {
case (a %2 == 0):
fmt.Println("switch case1 - 1")
case (a % 3 ==0):
fmt.Println("switch case1 - 2")
default:
fmt.Println("switch case1 - 3")
}
}
func deferCase() {
var n int = 0
defer fmt.Println("defer case - 1", n)
fmt.Println("case - 1", n)
n = n + 1
defer fmt.Println("defer case - 2", n)
fmt.Println("case - 2", n)
n = n + 1
defer fmt.Println("defer case - 3", n)
fmt.Println("case - 3", n)
n = n + 1
}
3, run “condition.go”
$ go run condition.go
you should get result like this:
i = 0 ,sum = 0
i = 1 ,sum = 1
i = 2 ,sum = 3
i = 3 ,sum = 6
i = 4 ,sum = 10
i = 5 ,sum = 15
i = 6 ,sum = 21
case 2, sum = 2
case 2, sum = 4
case 2, sum = 6
case 2, sum = 8
case 2, sum = 10
case 3, sum = 15
case 3, sum = 30
case 3, sum = 45
case 3, sum = 60
case 3, sum = 75
case 3, sum = 90
case 4, sum = 7
case 4, sum = 14
case 4, sum = 21
case 4, sum = 28
case 4, sum = 35
pow(2.000000, 3.000000) = 8.000000 >= 1.0
try 5.15 for sqrt()
try 2.86626213592233 for sqrt()
try 1.956460731776899 for sqrt()
try 1.74492093914502 for sqrt()
result of sqrt() = 1.7320982711195376 0.0001644208152913329
switch case1 - 2
case - 1 0
case - 2 1
case - 3 2
defer case - 3 2
defer case - 2 1
defer case - 1 0