表达式
Posted hongpeng0209
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表达式相关的知识,希望对你有一定的参考价值。
保留字
25个保留关键字
指针
不能将内存地址与指针混为一谈
内存地址是内存中每个字节单元的唯一编号,而指针则是一个实体,指针会分配内存空间,相当于一个专门用来保存地址的整型变量
- 取址运算符 & 用于获取对象地址
- 指针运算符 * 用于间接引用目标对象
- 二级指针 **T,如包含包名则写成*package.T
初始化
对复合类型(数组,切片,字典,结构体)变量初始化时,有一些语法限制
- 初始化表达式必须含类型标签
- 多个成员初始值逗号分隔
- 左花括号在类型尾部,不能另起一行
package main import ( "fmt" ) type data struct { a int b string } func main() { s := data{ 1, "ab", } fmt.Println(s) }
流程控制
if...else...
左花括号不能另起一行
package main import ( "fmt" ) func main() { var x int = 5 if x > 5 { fmt.Println("a") } else if x < 5 && x > 0 { fmt.Println("b") } else { fmt.Println("c") } }
switch同样支持初始化语句,从上到下,从左到右顺序匹配case执行,只有全部匹配失败时,才会执行default块
package main import ( "fmt" ) func main() { switch x := 5; x { default: //编译器会保证不会先执行default x += 100 fmt.Println(x) case 5: x += 50 fmt.Println(x) } }
无需执行break,case执行完毕后自动中断,如需贯通后继case,需执行fallthrough,但不再匹配后继条件表达式
package main import ( "fmt" ) func main() { switch x := 5; x { default: x += 100 fmt.Println(x) case 5: x += 50 fmt.Println(x) fallthrough //不需要匹配条件了,直接执行下一case;必须放在case块结尾 case 6: x += 100 fmt.Println(x) } }
输出 55 155
for循环
for i :=0;i<3;i++{ } for x < 10{ x++ } for { break }
for...range完成数据迭代,返回索引,键值数据
func main() { data := []string{"a", "b", "c"} for k, v := range data { fmt.Println(k, v) } }
goto,continue,break
package main import ( "fmt" ) func main() { for i := 0; i < 4; i++ { fmt.Println(i) if i > 1 { goto exit } } exit: fmt.Println("exit") }
break:用于switch、for、select语句,终止整个语句块执行
continue:仅用于for循环,结束本次循环,进入下一次循环
func main() { for i := 0; i < 10; i++ { if i%2 == 0 { continue } if i > 5 { break } fmt.Println(i) } }
以上是关于表达式的主要内容,如果未能解决你的问题,请参考以下文章