package main import "fmt" //定义一个包的话必须在环境变量下的文件 切你写的函数名首字母必须是大写,不是大写的代表只在该包内使用 // 要连个值能够相等的话 只要是有一点不一样那么这样个类型就不会相等 //函数高级 package main import "fmt" //闭包函数:定义在函数内部,对外部作用有引用 // //内层函数:定义在函数内部的函数 //go中函数内部定义的函数是不能有名的,需要定义匿名函数:没有名字 func test(a int) { func() { fmt.Println("我是内层函数") }() } //闭包函数 func test(a int) (func()) { //var c int =100 b:=func() { fmt.Println(a) fmt.Println("我是闭包函数") } return b } 定义一个函数,传入函数,返回函数 func test(a func()) func() { b:= func() { fmt.Println("我先执行") a() fmt.Println("函数执行完了") } return b } func test2() { fmt.Println("xxxx") } //给类型命别名 type MyFunc func(a int,b int) func() type MyInt int func test() (MyFunc) { c:= func(a int,b int) func(){ return func() { } } return c } func main() { //a:=test(3) //a() //a:=test2 //a=test(a) //a() var a MyInt=10 var b int =90 a=MyInt(b) fmt.Println(a) } //for func xxx() { for i := 0; i>10;i++ { fmt.Println(i) //简单的for循环,i++可以放在函数内部,i:=0可以在for循环的外部定义 //break和continue跟其他任何语言都一样 } } //for 进阶 func ddd() { for i,v:=range a{ //a是可迭代对象,range是关键字 //i,索引 //v就是a迭代器里面的值 fmt.Println(i,v) } } //与或非 //&& || ! //定义数组 func aaaa() { a:=[6] int{1,2,3,4:100} //定义一个数组 长度为6,里面的值为1,2,3,0,0,0 fmt.Println(a[0]) //4:100,索引为4的值设置为100 //索引取值获取0位值 //所有的函数中传的参数都是copy过来的值在函数内部更改不了外部的值,除非传的是内存地址 } //定义多维数组 func qqq() { var a [10][2]int //生成一个长度为10的列表,放入了长度为2的列表10个 fmt.Println(a[0][1]) } //另一种if判断 a:=10 switch a { case 1: fmt.Println("1") fmt.Println("xxxx") case 2: fmt.Println("2") case 10: fmt.Println("10") //穿透,无条件执行下一个case的内容 fallthrough case 11: fmt.Println("11") test5() fallthrough case 12: fmt.Println("12") } } import "fmt" // if else 基本用法 func main() { a :=20 if a>20{ fmt.Println("xiao") }else if a<20{ fmt.Println("da") }else { fmt.Println("谁都不等于") } }