2 程序结构

  • 关键字、运算符、基本类型及表达式

2.1 程序元素

  • 5种符号,标识符、关键字、运算符、分隔符与字面量
  • 是组成Go代码的最基本单位,
    • 这5种符号共同组成各种表达式和语句

2.1.1标识符

  • 标识变量、函数或任何用户自定义项目的名称(程序实体)
  • 用户定义的标识符,它作为程序实体存在,同一个代码块中不允许程序实体同名,使用不同代码包中的实体需要使用包标识符声明,
  • fmt.Println表示的是用fmt包中的Println标识符

  • 预定义标识符,在Go源码中声明
  • 数据类型:bool(true和 false)、
    • byte、 uintl6、
    • float32、 floate64、
    • int、int8、intl6、
    • uint32、int32、
    • int64、uint64、
    • string、uint、uint8、 uintptr;
  • 内建函数名:
    • append、cap、 close、
    • complex、copy、 delete、
    • imag、en、make、new、
    • panic、pint、 println、
    • real、 recover;
  • 其他标识符:iota、nil、_

  • _叫空标识符,用在变量声明与包的导入中
  • 若存在一个没用的变量a,编译报错,
  • Go要求存在实体必须使用,
  • =a,编译器会认为使用了a变量
  • 实际没对a操作
  • 程序初始化后空标识符就被释放

  • 标识符以字母a~z(大小写)或下画线开头
    • 后面可多个字母、下画线和数字
  • 不允许在标识符中用标点符号,例如@、$、%等符号
  • Go区分大小写

2.1.2关键字

  • 作为一门静态编译型语言,关键字25个,相比其他语言非常少,

  • 包导入与声明: Import、 package。

  • 程序实体声明与定义:var、type、func、 interface、map、 struct、chan、 const

  • 流程控制:if、 continue、for、 return、go、case、goto、 switch、 select、else、 break
    default、 defer、 fallthrough、 range

  • 也称保留字,不能用作常量、变量或任何其他标识符名称。

  • 还有一个比较特殊的类型叫作空接口,它的字面量是“_”

2.1.3字面量

  • 表示值的一种标记法,Go中,字面量的含义要更广些
  • 表示基础数据类型值的各种字面量
  • 表示用户构造的自定义复合数据类型的类型字面量
  • 表示复合数据类型的值的复合字面量,
    • 会被用来构造类型 Struct(结构体)、 Array(数组)、Sice(切片)和Map(字典)的值。

2 程序结构

2.1.4 分隔符

  • 分隔其他元素
  • fmt.Println(“Hell, World!”)中含6个标记

2 程序结构

  • 程序中使用的括号分隔符
    • 括号、中括号和大括号。
  • 标点分隔符包括
    • 小数点、逗号、分号、冒号和省略号。

  • Go不要;结尾,这些工作由编译器自动完成
  • 如果将多个语句写在同一行,就必须用;分隔

2.1.5运算符

2 程序结构

2 程序结构

  • Go中一元运算优先级高于二元运算符

2 程序结构

  • 表达式中出现相同优先级的运算符,从左到右操作
  • 括号内先操作,和数学运算法则无异
  • Go中,+和-是语句,不是表达式,没有运算符优先级之说。

2 程序结构

  • Go不支持运算符重载。

2.1.6注释

2 程序结构