【Go入门教程】Go 基础语法
1. Go语言基础语法
1.1 基本语法结构
Go语言是一种静态类型、编译型的开发语言,它的基本语法结构包括了变量声明、控制结构、函数定义等。这些基本语法结构是学习Go语言的必备知识。
1.1.1 变量声明与赋值
在Go语言中,变量的声明可以使用关键字var,也可以使用简洁的:=符号。同时,Go语言还支持多个变量的同时声明和赋值,让代码更加简洁。
// 使用var关键字声明变量
var num int
num = 10
// 使用:=符号声明和赋值变量
name := "Go语言"
// 同时声明和赋值多个变量
x, y := 1, 2
1.1.2 控制结构
Go语言的控制结构包括了条件语句和循环语句。条件语句通过判断条件的真假来执行不同的代码块,循环语句则可以重复执行特定的代码块。
条件语句
Go语言提供了if、switch和select三种条件语句的编写方式。
- if语句用于根据条件判断执行不同的代码块。
if age < 18 {
fmt.Println("未成年人")
} else {
fmt.Println("成年人")
}
- switch语句用于在多个选项中选择一个执行的代码块。
switch day {
case 1:
fmt.Println("星期一")
case 2:
fmt.Println("星期二")
// ...
default:
fmt.Println("未知")
}
- select语句用于处理多个通道的操作。
select {
case <-ch1:
fmt.Println("从ch1通道接收到数据")
case ch2 <- data:
fmt.Println("向ch2通道发送数据")
default:
fmt.Println("无法操作")
}
循环语句
Go语言提供了for和range两种循环语句的编写方式。
- for语句用于重复执行特定代码块,可以根据条件来控制循环。
for i := 0; i < 10; i++ {
fmt.Println(i)
}
- range语句用于遍历数组、切片、映射等数据结构中的元素。
nums := [5]int{1, 2, 3, 4, 5}
for index, value := range nums {
fmt.Printf("索引:%d,数值:%d\n", index, value)
}
1.1.3 函数定义与调用
函数是Go语言中的基本组织单元,它可以用于封装代码块,实现代码的模块化和重用。在Go语言中,函数的定义和调用非常简洁,通过函数名和参数列表即可完成调用。
// 函数定义
func add(a, b int) int {
return a + b
}
// 函数调用
result := add(1, 2)
fmt.Println(result)
1.2 数据类型与运算符
了解Go语言的基本语法结构后,接下来我们来学习Go语言中常用的数据类型和运算符。
1.2.1 数据类型
Go语言内置了多种基本数据类型,如整型、浮点型、布尔型和字符串等。了解这些数据类型可以帮助我们更好地理解Go语言的代码。
整型数据类型
Go语言提供了多种整型数据类型,包括int、int8、int16、int32、int64等。这些整型数据类型可以用于存储不同范围的整数值。
var num int = 10
浮点型数据类型
Go语言提供了两种浮点型数据类型,分别是float32和float64。它们可以用于存储带小数部分的数值。
var pi float64 = 3.14
布尔型数据类型
Go语言的布尔型数据类型bool只有两个取值,分别是true和false。布尔型数据类型通常用于表示条件的真假。
var isTrue bool = true
字符串类型
Go语言的字符串是一个字符序列,可以包含任意Unicode字符。我们可以使用双引号或反引号来表示字符串。
var str string = "Hello, Go!"
1.2.2 运算符
在Go语言中,运算符用于执行特定的操作,如算术运算、比较运算和逻辑运算等。了解这些运算符可以帮助我们进行数据的处理和计算。
算术运算符
Go语言提供了常见的算术运算符,包括加法、减法、乘法、除法和取余等。
x := 10
y := 3
fmt.Println(x + y) // 加法
fmt.Println(x - y) // 减法
fmt.Println(x * y) // 乘法
fmt.Println(x / y) // 除法
fmt.Println(x % y) // 取余
比较运算符
比较运算符用于比较两个值之间的关系,如相等、不相等、大于、小于等。
x := 10
y := 3
fmt.Println(x == y) // 相等
fmt.Println(x != y) // 不相等
fmt.Println(x > y) // 大于
fmt.Println(x < y) // 小于
逻辑运算符
逻辑运算符用于组合多个条件,执行逻辑与、逻辑或和逻辑非等操作。
x := true
y := false
fmt.Println(x && y) // 逻辑与
fmt.Println(x || y) // 逻辑或
fmt.Println(!x) // 逻辑非
1.2.3 关键字
分组 | 关键字 | 描述 |
---|---|---|
控制流语句 | if | 条件语句,用于根据判断结果执行不同的代码块 |
else | if语句中条件不满足时执行的代码块 | |
switch | 根据表达式结果执行不同的代码块 | |
case | switch语句中每个条件分支的判断条件 | |
default | switch语句中没有匹配到任何case时执行的代码块 | |
for | 用于重复执行某段代码块的循环语句 | |
break | 跳出当前循环或switch语句 | |
continue | 结束当前循环的迭代,并开始下一次循环迭代 | |
fallthrough | 用于switch语句中,执行匹配case后,继续执行下一个case | |
goto | 无条件跳转到指定的代码标签 | |
range | 用于遍历数组、切片、字符串、映射等数据结构的元素 | |
select | 用于在多个通信操作中选择一个执行的语句块 | |
defer | 延迟执行指定的函数 | |
类型和声明 | var | 声明一个变量 |
const | 定义常量 | |
type | 定义自定义类型别名 | |
func | 声明一个函数 | |
package | 用于定义包的信息 | |
数据类型 | bool | 布尔类型 |
byte | 别名为uint8,表示一个字节 | |
rune | 别名为int32,表示一个Unicode字符 | |
int | 有符号整数类型 | |
uint | 无符号整数类型 | |
uintptr | 用于存放指针的整数类型 | |
float32 | 单精度浮点数类型 | |
float64 | 双精度浮点数类型 | |
complex64 | 由float32类型的实部和虚部组成的复数类型 | |
complex128 | 由float64类型的实部和虚部组成的复数类型 | |
string | 字符串类型 | |
array | 固定长度的数组类型 | |
slice | 动态长度的切片类型 | |
struct | 结构体类型 | |
interface | 接口类型 | |
map | 映射类型 | |
chan | 用于协程间通信的通道类型 | |
其他关键字 | import | 导入其他包 |
return | 从函数中返回值 | |
go | 使用go关键字启动一个新的协程 | |
panic | 触发一个运行时错误 | |
recover | 恢复一个被panic中断的协程 |
1.3 总结
本篇文章介绍了Go语言的基础语法,包括变量声明与赋值、控制结构、函数定义与调用、数据类型和运算符等。熟悉了这些基础知识后,我们可以开始编写简单的Go程序了。
通过本篇文章的学习,我们了解了Go语言中的基本语法结构,掌握了变量声明与赋值、控制结构、函数定义与调用、数据类型和运算符等内容。这些知识是学习Go语言的基础,将为我们后续的学习和开发奠定坚实的基础。
希望本篇文章对您学习Go语言有所帮助,如果有任何问题或建议,请随时提出。在后续的文章中,我们将继续深入学习Go语言的高级特性和开发技巧。