day002:学懂Go语言基础语法(一)

一、了解关键字与标识符

关键字也称为保留字,也就是说,关键字是在编程语言中被赋予特定意义的单词,像Java语言、Python语言、Go语言等等,它们都有各自的关键字。

标识符简单地说就是一个描述事物的名字,就好比,你的朋友叫张三或李四一样。当然,在编程语言中,它的作用是为变量、函数、类、模块以及其他变量的名称命名。

在编程语言中,变量名称是编程语言常用的标识符之一。标识符,顾名思义,就是用来描述某个实体的符号,在不同的应用环境中有不同的含义。

2.1、关键字

在Go语言中,共设置了25个关键字,这些关键字存放在Go语言安装目录doc文件夹的go_spec.html文件中,如图2-1所示。

图 2-1 Go语言中的25个关键字

值得注意的是,这25个关键字,在代码中分别代表不同的功能含义。如图2-2所示。总的来说,这25个关键字主要用于定义变量、数据结构和流程控制语句,千万不要用它来作为变量的名字,否则程序会报错,提示语法错误。

图 2-2 关键字代表的不同含义

2.2、标识符的命名规范

正如前面所说,标识符主要作用是用来为变量、函数、类、模块以及其他变量的名称命名,那么Go语言对此的命名有什么规则呢?

总的归纳起来,主要有以下几点。

1、标识符由字符(a-z和A-Z)、下划线和数字组成,最重要的一点就是,标识符第一个字符不能是数字,比如:12Num,这就是不符合要求命名方式。

2、标识符不能与Go语言的关键字相同,也不能包含空格、@、%以及$等特殊字符。

3、标识符严格区分大小写,例如A和a就是两个不同的标识符。


在业界,为了使代码具有可读性,对此设有一套命名标准,也就是软性要求,具体说明如下:

1、标识符的命名要符合知名达意,例如,name定义为名字,age定义为年龄。

2、标识符的命名要尽量简短且有意义。

3、如果一个单词表达不清楚,可以使用大驼峰命名法(MyName)、小驼峰命名法(myName)和下划线命名法(my_name)。大驼峰命名法,也就是每个单词首字母大写。小驼峰命名法,就是首个单词字母小写,第二个单词的首字母大写。下划线命名法,就是将两个标识符用下划线链接起来的方式。


其他资料

标识符分类:空白标识符、预声明标识符、导出标识符和唯一标识符。

2.3、空白标识符(_):

空白标识符,也就是由下划线(_)表示,也被称为匿名占位符。应用场景是在Go语言定义变量且不被使用的时候,就是使用空白标识符表示,好处就是能减少内存空间开支,一般用于3种场合,具体如下:

1、导入包,只执行包的初始化函数init(),不调用包的任何变量或函数,使用import _ XX,就可以避免编译错误。

2、函数返回有多个值时,只想使用其中一个,不想使用其他的返回值,这时候,就使用空白标识符就行了。

3、类型断言,就是判断某个类型是否实现了接口,否则编译会报错。

package main

import (
    "fmt"
    _"math/rand" // 场合一,只使用math/rand的初始化函数init()
)

// 定义方法
func printInfo() (int, string) {
    age := 31
    name := "Tony"
    return age, name
}

// 定义接口
type Inter interface {
    Work()
}

// 定义结构体
type Driver struct {
    name string
}

func (d Driver) Work() {
    // 打印检测结构体实现接口Inter的信息
    fmt.Println(d.name + "开车")
}

func main() {
    // 场合二 调用函数printInfo(),只使用其中一个返回值
    age, _ := printInfo()
    fmt.Printf("获取函数的第一个返回值是:%d\n", age)

    // 场合三 判断Driver结构体是否实现了Inter接口,
    // 用作类型断言,如果Driver没有实现Inter接口就会编译报错
    var _ Inter = Driver{"北京出租车:李师傅"}
}

2.4、预声明标识符(= 基础数据类型+内置函数方法)

预声明标识符,主要包含基础数据类型和内置函数方法,顾名思义,这些预声明标识符也不能当做普通标识符来使用。你可能会疑惑,这个与关键字有什么区别?

我们来看下面这个例子:var就是关键字,定义变量num,int就是预声明标识符设置变量的数据类型,两者有先后循序。

总的来说,关键字定义变量、数据结构和流程控制语句,而预声明标识符只设置变量的基础数据类型或使用Go语言的内置函数方法

var num int = 10

那么说了这么多,到底什么是预声明标识符呢?下面这张图正好表达了这个概念。(图片:来源于网络)

图 2-3 预声明标识符的图

2.5、导出标识符

导出标识符,简单地说就是在程序中导入某个包,并允许调用包里面的已定义好的变量或函数方法,如变量、函数、结构体等等。敲重点了,导出标识符的首个字母必须是大写格式,否者无法被使用。

2.6、唯一标识符

唯一标识符,主要是从变量命名的唯一性来看,也是标识符的特性之一。看下面三组变量声明,可以知道,第一行的age与第二行的Age,很明显是不同的标识符(标识符区分大小写),但是,第一行的age和第三行的age定义就有问题了,虽然只是类型不同,但是,标识符重复了,违背了标识符唯一的特性。程序执行时会提示redeclared in this block异常。如图2-4所示

var age int
var Age int
var age string

图 2-4 唯一标识符的特性

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值