表达式

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)
	}
}

  

以上是关于表达式的主要内容,如果未能解决你的问题,请参考以下文章

4.3 合并重复的条件执行片段

在 intellij 上调试评估表达式

sublimetext3中保存代码片段

前端开发必备!Emmet使用手册

图解 Google V8 # 05:函数表达式的底层工作机制

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性