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("谁都不等于")
}
}