Go 语言入门指南:基础语法和常用特性解析 | 青训营

82 阅读3分钟

Go 语言入门指南:基础语法和常用特性解析

Go 语言的基础语法和常用特性包括以下几个方面:

  • 变量和常量:Go 语言使用 var 关键字来声明变量,使用 const 关键字来声明常量。变量和常量的类型可以是基本类型(如 int, float64, bool, string 等)或复合类型(如 array, slice, map, struct, interface 等)。变量和常量的命名遵循驼峰式(camelCase)或下划线式(snake_case),并且区分大小写。变量和常量的作用域取决于它们的声明位置,如果首字母大写,则表示导出(exported),可以被其他包(package)访问,否则表示非导出(unexported),只能在当前包内访问。

  • 函数:Go 语言使用 func 关键字来定义函数,函数可以有零个或多个参数,以及零个或多个返回值。参数和返回值的类型必须在函数声明中指定。函数可以是命名的(named)或匿名的(anonymous),匿名函数也称为闭包(closure),可以作为值传递或赋值给变量。函数也可以作为参数或返回值,这样的函数称为高阶函数(higher-order function)。Go 语言支持可变参数(variadic parameter),即在参数列表末尾使用 ... 表示接受任意数量的同类型参数。Go 语言也支持多返回值(multiple return values),即在返回值列表中使用 , 分隔多个返回值。Go 语言还支持命名返回值(named return values),即在返回值列表中给返回值命名,这样可以省略 return 语句中的返回值。

  • 控制流:Go 语言使用 if, else, switch, case, default, for, break, continue, goto 等关键字来实现控制流。控制流是指程序执行的顺序和分支,通常用于实现条件判断、循环、跳转等逻辑。

    • if-elseif-else 语句用于根据一个布尔表达式(boolean expression)来执行不同的代码块。if-else 语句可以有一个可选的初始化子句(initialization clause),即在布尔表达式之前使用 ; 分隔一个简单的语句,该语句中声明的变量只在当前 if-else 块中有效。if-else 语句也可以嵌套,即在一个 if-else 块中再使用一个或多个 if-else 块。

    • switch-case-defaultswitch-case-default 语句用于根据一个表达式的值来执行不同的代码块。switch-case-default 语句也可以有一个可选的初始化子句,与 if-else 语句类似。switch-case-default 语句中的每个 case 子句可以有一个或多个值,用 , 分隔,表示匹配任意一个值时执行该子句。如果没有匹配任何一个 case 子句,则执行 default 子句。与其他编程语言不同,Go 语言中的 switch-case-default 语句不需要在每个子句末尾使用 break 语句来跳出,除非需要执行后续的子句,这时可以使用 fallthrough 语句来实现。

      • 经典形式for init; condition; post { ... },其中 init 是一个初始化子句,用于声明或赋值循环变量,condition 是一个布尔表达式,用于判断是否继续循环,post 是一个后置子句,用于更新循环变量。这种形式类似于其他编程语言中的 for 循环。
      • while 形式for condition { ... },其中 condition 是一个布尔表达式,用于判断是否继续循环。这种形式类似于其他编程语言中的 while 循环。
      • 无限循环for { ... },这种形式没有任何条件,表示无限循环,直到被 break 语句或者其他方式终止。
  • 数组:数组(array)是一种固定长度的序列(sequence),用于存储同类型的元素。数组的长度在声明时就确定,不能改变。数组的索引(index)从 0 开始,可以使用 [index] 来访问或修改数组中的元素。数组可以使用字面量(literal)来初始化,也可以使用内置的 len() 函数来获取数组的长度。