Golang conditionals: Difference between revisions
From wikinotes
No edit summary |
|||
Line 80: | Line 80: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
You can also swith on variable type. | You can also swith on variable type. | ||
<syntaxhighlight lang="go"> | <syntaxhighlight lang="go"> | ||
wordsize := 64 | wordsize := 64 | ||
Line 96: | Line 92: | ||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> | ||
</blockquote><!-- | </blockquote><!-- Switch Statements --> |
Revision as of 00:28, 6 June 2022
If Statements
if 1 > 0 { // ... } else if 2 > 0 { // ... } else { // ... }Similar to for loops, go's if statements can use an initializer.
if err := file.Chmod(0664); err != nil { log.Print(err) } // common in hash tests if _, ok := myMap["someKey"]; ok { // eval if key present }Short Circuiting
// the final 'false' is never evaluated, because the second is true if false || true || false { ... } // same deal with elses if false { // ... } else if true { // ... } else if false { // <-- expression never evaluated // ... }
Switch Statements
Regular switch statements that test specific variable
switch var { case 'a', 'b', 'c': fmt.Println("is a, b, or c") case 'd', 'e', 'f': fmt.Println("is d, e, or f") default: fmt.Println("default behaviour") }Switch statements can also test different variables
switch { case '0' <= number: fmt.Println("is zero") case 'a' <= letter: fmt.Println("is a") }You may also force evaluate sections even if one case is matched with falthrough.
require "strings" var arch string var wordsize string cpuarch := "x86-64" switch { case strings.HasPrefix(cpuarch, "x86"): arch = "x86" fallthrough // <-- continue to next case statement, even when evaluates to true case strings.Split(cpuarch, "-")[1] == "64": wordsize = 64 }You can also swith on variable type.
wordsize := 64 switch wordsize.(type) { int: // ... string: // ... }