funcaa(num int)int { return num * num } funcmain() { m := map[int]func(a int, b int)int{} m[1] = func(a int, b int)int { return a + b } m[2] = func(a int, b int)int { return a - b } m[3] = func(a int, b int)int { return a * b } m[4] = func(a int, b int)int { return a * b }
m[1](12, 3) for _, f := range m { fmt.Println(f(12, 3)) } }
funcmain() { switch os := runtime.GOOS; os { case"darwin": fmt.Println("system is mac") case"linux": fmt.Println("system is linux") default: fmt.Println("其他") } }
//类似 if else name:="oec2003" switch{ case name=="oec2003": fmt.Println("name is oec2003") default: fmt.Println("name is undefine") }
//case 后面支持多个值 name := "fengwei" switch name { case"oec2003", "fengwei": fmt.Println("都是我的名字") default: fmt.Println("不认识") }
6、循环
在 Go 语言中,关键字非常少,因此,循环处理只有一个关键字 for
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
//相当于 C# 中的 while n := 0 for n < 5 { fmt.Println(n) n++ } //相当于 C#中的 while(true) for{ fmt.Println("这是一个死循环") } // 相当于 C# 中的正常的 for for i := 0; i < 10; i++ { fmt.Println(i) } // 相当于 C# 中的 foreach a := [...]int{1, 2, 3, 4} for v := range a { fmt.Println(v) }
上面使用一个关键字包含了 C# 中所有遍历的方式;
for 后面的表达式不需要写括号。
7、特别的 main 函数
一个简单完整的 Go 程序如下所示:
1 2 3 4 5 6 7
package main
import"fmt"
funcmain() { fmt.Println("hello oec2003!") }
可以看出 Go 的 main 函数没有返回值和参数,如果需要在 main 函数中使用参数,需要引入 os 包: