Go 语法概览 Part 1

这篇文章是对 Go 语言的基本语法做的一个笔记。计划用三篇文章来记录,这篇主要记录 Go 的词法元素。

词法元素

Go 语言的词法元素,也叫做语言符号,分为 5 类,如下所示:

  1. identifier:标识符
  2. keyword:关键字
  3. literal:字面量
  4. delimiter:分隔符
  5. operator:操作符

identifier

Go 语言中的标识符可以大致分为两类,一类用以表示程序实体,作为后者的名称而存在。其可以是 Unicode 字符集中任意能表示自然语言文字的字符、数字以及下划线(_)。

Go 中的变量、常量、函数和类型声明统称为程序实体。

在 Go 中标识符的首字母的大小写控制着对应程序实体的访问权限。

  • 首字母大写:对应的程序实体就可以被本代码包之外的代码访问到,既公开的。
  • 首字母小写:对应的程序实体只能被本代码包的代码访问,既包级私有。

空标识符 “_“,用于变量声明或代码包的导入语句中。

1
2
3
4
5
6
7
// 初始化某个代码包,但不在当前文件中使用它的任何程序实体。
import _ "fmt"

// 如果 x 声明后没有使用,编译器会报错。
// 使用空标识符可以绕过编译器检查。
// 在初始化后操作的对象就会被弃之不用。
_ = x

另一类是预定义标识符,在 Go 语言的源码中被声明。分为以下几种:

  • 所有基本类型的名字
  • 接口类型 error
  • 常量 true,false 以及 itoa
  • 所有内建函数的名字,append、cap、close、complete、copy、delete、imag、len、make、new、panic、print、prinln、real、recover。

keyword

Go 的关键字可以分为三类:

  • 程序声明:import 和 package
  • 程序实体声明:chan、const、func、interface、map、struct、type、var
  • 程序流程控制:go、select、break、case、continue、default、defer、else、fallthrough、for、goto、if、range、return、switch

使用 type 关键字可以声明一个自定义类型

1
var customString string

声明的自定义类型是被声明类型的一个别名类型。例如 rune 与 int32。两者之间的转换不会产生新值。

oprator

Go 语言的操作符优先级,从高到低排列:

  • */%<< 、>>、 &、 &^
  • + 、- 、|、 ^
  • ==、!=、<、<=、>、>=
  • &&
  • ||

literal

字面量:值的一种标记法。有三类:

  • 表示基础数据类型值的字面量。如,表示浮点数类型值的 12E-3

  • 构造自定义复合数据的类型字面量。如,

    1
    2
    3
    4
    type Person struct {
    Name string
    Age int
    }
  • 表示复合数据类型的值的字面量。如,

    1
    Person{Name: "name", Age: 12}

Go 语法概览 Part 1
https://blog.zhangliangliang.cc/post/Go-grammar-overview-1.html
作者
Bobby Zhang
发布于
2019年3月30日
许可协议