We are going to explore Go lang control structure, this is not covering all the control statement but you can refer control-structures from effective go to get all the details.
Refer to index page for all the content written so far.
One thing that i like about control structure is that it is very easy to understand.
Focus on readability is clearly seen .
If statement
Go lang author managed to removed extra bracket in if statement, it looks something like
if x > 10 {
fmt.Println("I am gt ", x)
} else {
fmt.Println("I am lt ", x)
}
Another variation that includes initialization and condition both
if value := time.Now().Weekday(); value == time.Sunday {
fmt.Println("Yahoooo.. today is sunday")
} else {
fmt.Println("Lets get back to work. I hate", value)
}
Switch Statement
Switch case has few variations
Simple one
value := 10
switch value {
case 10:
fmt.Println("Value is 10")
default:
fmt.Println("Some other value than 10")
}
With No expression
switch {
case value >= 10:
fmt.Println("Value is gt 10")
case value >= 20:
fmt.Println("Value is gt 20")
}
Switch with multiple condition in single case
specialValue := '@'
switch specialValue {
case '@', '!', '#':
fmt.Println("This is special value")
default:
fmt.Println("This is normal value")
}
Switch with type assertion
Type assertion can be only done using switch case using variable.(type) expression.
var t interface{}
t = "James"
switch t.(type) {
case int:
fmt.Println("Int value", t)
case string:
fmt.Println("String value", t)
}
Loops
Has only one type of loop(while) and it can be used for all the purpose.
C/Java like
It has init, condition,post section.
value := 0
for counter := 0; counter < 10; counter++ {
value++
}
fmt.Println(value)
Just condition
value = 0
for value < 10 {
value++
}
fmt.Println(value)
Infinite (with no condition)
for {
value++
if value > 10 {
break
}
}
Smart loops
This is useful when dealing with arrays/map/channels
days := []string{"Sunday", "Monday"}
for index, value := range days {
fmt.Println("Index ", index, "Value ", value)
}
range keyword is very power full it works with all the collections types.
Another thing i like about golang is that compiler helps with lot of common error for e.g unused variable are compiler error, so below example is error because index is not used.
days := []string{"Sunday", "Monday"}
for index, value := range days {
fmt.Println("Value ", value)
}
It is possible to ignore the value by using "_" for eg
days := []string{"Sunday", "Monday"}
for _, value := range days {
fmt.Println("Value ", value)
}
Sample used in this post is available @ 003-statement github repo
Refer to index page for all the content written so far.
One thing that i like about control structure is that it is very easy to understand.
Focus on readability is clearly seen .
If statement
Go lang author managed to removed extra bracket in if statement, it looks something like
if x > 10 {
fmt.Println("I am gt ", x)
} else {
fmt.Println("I am lt ", x)
}
Another variation that includes initialization and condition both
if value := time.Now().Weekday(); value == time.Sunday {
fmt.Println("Yahoooo.. today is sunday")
} else {
fmt.Println("Lets get back to work. I hate", value)
}
Switch Statement
Switch case has few variations
Simple one
value := 10
switch value {
case 10:
fmt.Println("Value is 10")
default:
fmt.Println("Some other value than 10")
}
With No expression
switch {
case value >= 10:
fmt.Println("Value is gt 10")
case value >= 20:
fmt.Println("Value is gt 20")
}
Switch with multiple condition in single case
specialValue := '@'
switch specialValue {
case '@', '!', '#':
fmt.Println("This is special value")
default:
fmt.Println("This is normal value")
}
Switch with type assertion
Type assertion can be only done using switch case using variable.(type) expression.
var t interface{}
t = "James"
switch t.(type) {
case int:
fmt.Println("Int value", t)
case string:
fmt.Println("String value", t)
}
Loops
Has only one type of loop(while) and it can be used for all the purpose.
C/Java like
It has init, condition,post section.
value := 0
for counter := 0; counter < 10; counter++ {
value++
}
fmt.Println(value)
Just condition
value = 0
for value < 10 {
value++
}
fmt.Println(value)
Infinite (with no condition)
for {
value++
if value > 10 {
break
}
}
Smart loops
This is useful when dealing with arrays/map/channels
days := []string{"Sunday", "Monday"}
for index, value := range days {
fmt.Println("Index ", index, "Value ", value)
}
range keyword is very power full it works with all the collections types.
Another thing i like about golang is that compiler helps with lot of common error for e.g unused variable are compiler error, so below example is error because index is not used.
days := []string{"Sunday", "Monday"}
for index, value := range days {
fmt.Println("Value ", value)
}
It is possible to ignore the value by using "_" for eg
days := []string{"Sunday", "Monday"}
for _, value := range days {
fmt.Println("Value ", value)
}
Sample used in this post is available @ 003-statement github repo
No comments:
Post a Comment