go/en: add type switch and multiple cases

This commit is contained in:
Michael Graf 2020-01-30 15:29:06 -08:00
parent 1ada1d35bb
commit a7242df7d7

View File

@ -12,6 +12,7 @@ contributors:
- ["Alexej Friesen", "https://github.com/heyalexej"] - ["Alexej Friesen", "https://github.com/heyalexej"]
- ["Clayton Walker", "https://github.com/cwalk"] - ["Clayton Walker", "https://github.com/cwalk"]
- ["Leonid Shevtsov", "https://github.com/leonid-shevtsov"] - ["Leonid Shevtsov", "https://github.com/leonid-shevtsov"]
- ["Michael Graf", "https://github.com/maerf0x0"]
--- ---
Go was created out of the need to get work done. It's not the latest trend Go was created out of the need to get work done. It's not the latest trend
@ -196,7 +197,7 @@ func learnFlowControl() {
x := 42.0 x := 42.0
switch x { switch x {
case 0: case 0:
case 1: case 1, 2: // Can have multiple matches on one case
case 42: case 42:
// Cases don't "fall through". // Cases don't "fall through".
/* /*
@ -208,6 +209,19 @@ func learnFlowControl() {
default: default:
// Default case is optional. // Default case is optional.
} }
// Type switch allows switching on the type of something instead of value
var data interface{}
data = ""
switch c := data.(type) {
case string:
fmt.Println(c, "is a string")
case int64:
fmt.Printf("%d is an int64\n", c)
default:
// all other cases
}
// Like if, for doesn't use parens either. // Like if, for doesn't use parens either.
// Variables declared in for and if are local to their scope. // Variables declared in for and if are local to their scope.
for x := 0; x < 3; x++ { // ++ is a statement. for x := 0; x < 3; x++ { // ++ is a statement.