关键字和标识符
发布者:admin 发表于:446天前 阅读数:629 评论:0

此篇文章将介绍Go中的关键字和标识符。

[]()

关键字

关键字是一些特殊的用来帮助编译器理解和解析源代码的单词。

截止目前(Go 1.15),Go中共有25个关键字。

break     default      func    interface  select
case      defer        go      map        struct
chan      else         goto    package    switch
const     fallthrough  if      range      type
continue  for          import  return     var

这些关键字可以分为四组:

**const**、**func**、**import**、**package**、**type**和**var**用来声明各种代码元素。

**chan**、**interface**、**map**和**struct**用做
一些组合类型的字面表示中。

**break**、**case**、**continue**、**default**、 **else**、**fallthrough**、**for**、 **goto**、**if**、**range**、 **return**、**select**和**switch**用在流程控制语句中。
详见[基本流程控制语法](control-flows)。

**defer**和**go**也可以看作是流程控制关键字,
但它们有一些特殊的作用。详见[协程和延迟函数调用](control-flows-more)。

这些关键字将在后续文章中得到详细介绍。

[]()

标识符

一个标识符是一个以Unicode字母或者_开头并且完全由Unicode字母和Unicode数字组成的单词。

Unicode字母是定义在[Unicode标准8.0](http://www.unicode.org/versions/Unicode8.0.0/)
中的Lu、Ll、Lt、Lm和Lo分类中的字符。

Unicode数字是定义在Unicode标准8.0中的Nd数字字符分类中的字符。

注意:关键字不能被用做标识符。

标识符_是一个特殊字符,它叫做空标识符。

以后,我们将知道所有的类型名、变量名、常量名、跳转标签、包名和包的引入名都必须是标识符。

一个由Unicode大写字母开头的标识符称为导出标识符。 这里导出可以被理解为公开(public)。 其它(即非Unicode大写字母开头的)标识符称为非导出标识符。 非导出可以被理解为私有(private)。 截至目前(Go 1.15),东方字符都被视为非导出字符。 非导出有时候也被称为未导出。

下面是一些合法的导出标识符:

Player_9
DoSomething
VERSION
Ĝo
Π

下面是一些合法的未导出标识符:

_
_status
memStat
book
π
一个类型
변수
エラー

下面这些不能被用做标识符:

// Unicode数字开头
123
3apples

// 含有不符合要求的Unicode字符
a.b
*ptr
$name
a@b.c

// 这两个是关键字
type
range