GO语言基础语法 | 青训营笔记

93 阅读5分钟

Go语言是一种编译型、并发型、垃圾回收型的编程语言,由Google公司开发,于2009年正式发布。Go语言的设计目标是实现高效的编译、运行和部署,以及简洁的语法、易于阅读和维护的代码,以及支持高并发的编程模型。 Go语言的基础语法包括以下几个方面: 包和导入:Go语言的代码组织单位是包(package),每个源文件都必须声明属于哪个包。包名一般与源文件所在的目录名相同,但也可以不同。一个可执行程序必须有一个名为main的包,其中包含一个名为main的函数作为程序的入口。导入(import)语句用于引用其他包中的代码,可以使用相对路径或绝对路径来指定要导入的包。导入的包可以使用点号(.)或别名(alias)来简化访问,也可以使用下划线(_)来忽略导入的包。 变量和常量:Go语言中使用var关键字来声明变量,可以同时声明多个变量,也可以在声明时给变量赋值。如果没有赋值,变量会被初始化为零值,即数值类型为0,布尔类型为false,字符串类型为空字符串,指针类型为nil等。Go语言也支持短变量声明(short variable declaration),即使用:=符号来同时声明和赋值变量,这种方式只能用在函数内部。Go语言中使用const关键字来声明常量,常量必须在声明时给定值,且不能修改。常量可以是数值、布尔或字符串类型,也可以是枚举类型(enumerated constant),即一组相关的常量。 数据类型:Go语言中有四种基本数据类型:布尔类型(bool)、整数类型(int)、浮点数类型(float)和复数类型(complex)。整数类型分为有符号整数(int8、int16、int32、int64)和无符号整数(uint8、uint16、uint32、uint64),其中uint8也称为byte,int32也称为rune。浮点数类型分为单精度浮点数(float32)和双精度浮点数(float64)。复数类型分为复数64(complex64)和复数128(complex128),分别由两个float32或float64构成。Go语言中还有四种复合数据类型:数组(array)、切片(slice)、映射(map)和结构体(struct)。数组是一种固定长度的序列,每个元素都是同一种数据类型。切片是一种可变长度的序列,它是对数组的一个视图或引用。映射是一种键值对的集合,它使用哈希表来实现快速查找。结构体是一种聚合多个不同数据类型的字段的数据结构,它可以表示一个实体或对象。 函数和方法:Go语言中使用func关键字来定义函数,函数可以有零个或多个参数和返回值,参数和返回值都需要指定类型。函数可以返回多个值,也可以命名返回值,这样就不需要在函数体中显式地返回它们。函数可以作为参数或返回值传递给其他函数,这样就实现了高阶函数(higher-order function)。函数也可以是匿名的,即没有函数名,这样就可以定义函数字面量(function literal)或闭包(closure)。方法(method)是一种特殊的函数,它与一个特定的类型(接收者类型)关联,可以通过接收者类型的变量或指针来调用。方法可以访问接收者类型的字段和方法,也可以实现接口(interface)。 控制流:Go语言中有三种基本的控制流语句:if、for和switch。if语句用于条件判断,它可以有一个可选的初始化语句和一个布尔表达式,如果布尔表达式为真,则执行if块中的语句,否则执行else块中的语句(如果有)。for语句用于循环迭代,它可以有三个可选的组成部分:初始化语句、条件表达式和后置语句,如果条件表达式为真,则执行for块中的语句,并在每次迭代后执行后置语句,直到条件表达式为假。switch语句用于多分支选择,它可以有一个可选的初始化语句和一个表达式(或无表达式),然后根据表达式的值或默认情况来匹配不同的case分支,并执行相应的语句。 以上是我对Go语言基础语法的一些笔记,我认为Go语言是一种简单而强大的编程语言,它具有清晰的语法结构、高效的编译速度、灵活的数据类型、丰富的内置函数和标准库、优秀的并发机制和跨平台特性等优点。我也发现Go语言有一些需要注意或改进的地方,例如: Go语言没有类(class)和继承(inheritance)的概念,而是使用结构体和组合(composition)来实现面向对象编程。这样可以避免继承带来的复杂性和歧义性,但也可能导致代码重复和冗余。 Go语言没有泛型(generic)或模板(template)的特性,这意味着不能定义通用的数据结构或算法,而是需要针对每种数据类型编写特定的代码。这样可以提高运行时效率和类型安全性,但也可能导致代码冗长和难以维护。 Go语言没有异常(exception)机制,而是使用错误(error)值来表示函数执行失败的情况。这样可以避免异常带来的不确定性和开销,但也需要程序员显式地检查和处理错误,否则可能导致程序崩溃或逻辑错误。 总之,Go语言是一种值得学习和使用的编程语言,它有自己独特的设计哲学和风格,也有自己存在的问题和挑战。我希望通过不断地学习和实践,能够更好地掌握和运用Go语言。