switch
Compared to other programming languages (such as C
), Go
's switch-case
statement doesn't need explicit "break
", and not have fall-though
characteristic. Take the following code as an example:
package main
import (
"fmt"
)
func checkSwitch(val int) {
switch val {
case 0:
case 1:
fmt.Println("The value is: ", val)
}
}
func main() {
checkSwitch(0)
checkSwitch(1)
}
The output is:
The value is: 1
Your real intention is the "fmt.Println("The value is: ", val)
" will be executed when val
is 0
or 1
, but in fact, the statement only takes effect when val
is 1
. To fulfill your request, there are 2
methods:
(1) Use fallthrough
:
func checkSwitch(val int) {
switch val {
case 0:
fallthrough
case 1:
fmt.Println("The value is: ", val)
}
}
(2) Put 0
and 1
in the same case
:
func checkSwitch(val int) {
switch val {
case 0, 1:
fmt.Println("The value is: ", val)
}
}
switch
can also be used as a better if-else
, and you may find it may be more clearer and simpler than multiple if-else
statements.E.g.:
package main
import (
"fmt"
)
func checkSwitch(val int) {
switch {
case val < 0:
fmt.Println("The value is less than zero.")
case val == 0:
fmt.Println("The value is qual to zero.")
case val > 0:
fmt.Println("The value is more than zero.")
}
}
func main() {
checkSwitch(-1)
checkSwitch(0)
checkSwitch(1)
}
The output is:
The value is less than zero.
The value is qual to zero.
The value is more than zero.