
go
lgldl
这个作者很懒,什么都没留下…
展开
-
go语言select语句
go语言select语句 select会选择一个可运行的case(每个case都必须是一个通信)运行。 chan1, chan2 := make(chan int, 1), make(chan int, 1) select { case chan1 <- 1: fmt.Println("run chan1<-1") case <-chan2: fmt.Println("<-chan2") } /* 输出:run chan1<-1 */ 若有多个可运行的cas原创 2021-06-06 21:27:32 · 163 阅读 · 0 评论 -
go语言panic 和 recover
panic 和 recover 引发panic有两种情况,一种是程序主动调用panic函数,另一种是程序产生运行时错误,由运行时检测并抛出。 发生panic后,程序会从调用panic的函数位置或发生panic的地方立即返回,逐层向上执·行函数的defer语句,然后逐层打印函数调用堆栈,直到被recover捕获或运行到最外层函数而退出。 任意类型的变量都可以传递给panic panic不但可以在函数正常流程中抛出,在defer逻辑里也可以再次调用panic或抛出panic。defer里面的panic能够被后续原创 2021-06-04 13:37:52 · 242 阅读 · 0 评论 -
go语言defer
defer Go函数里提供了defer关键字,可以注册多个延迟调用,这些调用以先进后出(FILO)的·顺序在函数返回前被执行。 func main() { defer func() { fmt.Println("firstDefer") }() fmt.Println("firstMain") } /* 输出 firstMain firstDefer */ defer函数的实参在注册时通过值拷贝传递进去。 func tmpFunc() { a := 1 defer func(i int)原创 2021-06-03 18:49:48 · 95 阅读 · 0 评论 -
go语言函数
函数定义 一个函数的定义包括如下几个部分: 函数声明关键字func,函数名,参数列表,返回列表,函数体。函数的参数和返回值需要使用“()“包裹,如果只有一个返回值,而且使用的是非命名的参数,则返回参数的”()“可以省略。函数体使用”{}“包裹,并且”{"必须位于函数返回值同行的行尾。多个相邻的相同类型的参数可以使用简写模式. func sum(a, b int) int { //相当于 sum(a int , b int ) int return a+b } 函数可以没有输入参数,也可以没有返回值原创 2021-06-03 18:40:39 · 133 阅读 · 0 评论 -
go语言标签和跳转
标签和跳转 标签的语法是: Lable : goto goto 语句用于函数的内部的跳转 var a int = 2 LOOP: for a < 5 { if a == 3 { a = a + 1 goto LOOP } fmt.Printf("a= : %d\n", a) a++ } a= : 2 a= : 4 goto 语句不能跳过内 部变量声明语句 goto Lable1 a := 1 Lable1: fmt.Println(a) goto L原创 2021-06-02 19:30:52 · 574 阅读 · 0 评论 -
go for循环
for 语句 有三种语法: for i := 0; i < 5; i++ { fmt.Println(i) } i := 0 for i < 5 { fmt.Println(i) i++ } i := 0 for { fmt.Println(i) i++ if i >= 5 { break } } for 还能对数组,切片,字符串,map和通道访问 aMap := make(map[int]string) aMap[0] = "s原创 2021-06-02 17:51:52 · 198 阅读 · 0 评论 -
go语言笔记判断语句
if 语旬 {必须放在行尾,和 if 或 if else 放在一行。 if x < y { return x } if 后面可以带一个简单的初始化语句,并以分号分割,该简单语句声明 的变量的作用域是整个 if 语句块 if x :=f(); x <y { //初始化语句中的声明变量x return x } else if x >z { //x在else if里面一样可以被访问 return z }else { return y } go语言没有条件运算符 swit原创 2021-06-02 17:28:59 · 236 阅读 · 0 评论 -
go变量笔记
变量 使用一个名称来绑定一块内存地址 , 该内存地址中存放的数据类型由定义变量时指 定的类型决定,该内存地址里面存放的内容可以改变。 显式的完整声明 var a int = l var a int = 2*3 var a int =b 短类型声明 varName := value :=只能出现在函数内. 此时 Go 编译器自动进行数据类型推断。 Go 支持多个类型变量同 时声明并赋值 a,b := 1,”hello " var ( vname1 v_type1 vname2 v_ty原创 2021-06-01 21:15:40 · 222 阅读 · 0 评论 -
go build 编译时的附加参数
go build编译时的附加参数 附加参数 备 注 -v 编译时显示包名 -p n 开启并发编译,默认情况下该值为 CPU 逻辑核数 -a 强制重新构建 -n 打印编译时会用到的所有命令,但不真正执行 -x 打印编译时会用到的所有命令 -race 开启竞态检测 -i已被弃用 ...原创 2021-06-01 18:20:28 · 792 阅读 · 0 评论 -
go语言学习笔记--词法单元
标识符构成规则 Go 的标识符构成规则是 : 开头一个字符必须是字母或下画钱 , 后面w任意多个字符、数字或下画线 ,并且区分大小写 ,Unicod e 字符也可以作为标识符的构成,但是一般不推荐这么使用。 9aa //这不是一个合法标识符,不是以字母或下画线开头 -aa //这不是一个合法标识符,不是以字母或下画线开头 _aa //这是一个合法标识符 aa //这是一个合法标识符 关键字 Go 语言是一门极简的语言,只有如下 25 个关键字 : 程序整体结构 package // 定义包名的关键字 im原创 2021-05-31 19:57:59 · 255 阅读 · 0 评论