语法介绍
package main //一个程序必须有一个main包 import "fmt" //func为函数关键字 func main() { //程序入口,从main函数进 fmt.Println("hello go") //使用包中函数,格式:包名.函数名() }
变量
//声明一个int型的变量a var a int //给变量a赋值 a = 10 //初始化int型变量b var b int = 5 //自动推导类型 c := 7
输入
//从键盘进行输入 var input int fmt.Scanf("%d", &input) var input2 int fmt.Scan(&input2)
if-else
//if-else if i := 3; i == 3 { //if支持初始化语句 fmt.Println("i==3") } else if i > 3 { fmt.Println("i>3") } else { fmt.Println("i<3") }
for
for i := 1; i < 4; i++ { fmt.Println("i=", i) }
switch
var num int fmt.Scan(&num) switch num { //switch 变量 case 1: fmt.Println("num==1") //自带break功能 case 2: fmt.Println("num==2") default: fmt.Println("其他") } switch { //switch后面不带变量 case num < 2: //case后面可以写判断语句 fmt.Println("num<2") case num == 2: fmt.Println("num=2") case num > 2: fmt.Println("num>2") }
函数
func fun1() { fmt.Println("无参无返回值") } func fun2(a int) { fmt.Println("有参无返回值,参数是:", a) } func fun3() (b int) { b = 5 fmt.Println("无参有返回值,返回值是:", b) return } func fun4(a int) (b int) { b = a fmt.Printf("有参有返回值,参数是 %d,返回值是 %d", a, b) return } func fun5(a, b int) (c, d int) { c, d = b, a fmt.Printf("多返回值:%d %d", c, d) return } func main() { fun1() //无参无返回值 fun2(2) //有参无返回值 b := fun3() //无参有返回值 c := fun4(5) //有参有返回值 d, e := fun5(1, 2) //多返回值 fmt.Printf("%d %d %d %d\n", b, c, d, e) }
结果:
无参无返回值 有参无返回值,参数是: 2 无参有返回值,返回值是: 5 有参有返回值,参数是 5,返回值是 5多返回值:2 15 5 2 1
函数类型
//函数类型 type FunType func(int, int) int func Add(a, b int) (c int) { c = a + b return } func Minus(a, b int) (c int) { c = a - b return } //回调函数 func fun(a, b int, funType FunType) (res int) { res = funType(a, b) return } func main() { res := fun(1, 2, Add) fmt.Println("res=", res) }
结果:
res= 3
匿名函数和闭包
//匿名函数,没有函数名 func(a int) { //函数内可以使用函数外的变量,称为闭包,闭包捕获外部变量是以引用形式捕获 fmt.Println("b=", b) fmt.Println("a=", a) }(3) //直接调用 t := func() { fmt.Println("我是一个匿名函数") } t() //间接调用匿名函数