Go语言入门指南笔记
一、Go语言简介
Go语言(又称Golang)是谷歌开发的一种静态强类型、编译型、并发性的编程语言。它旨在支持高并发、高性能的网络应用程序,特别适用于微服务架构和云计算环境。Go语言的设计哲学强调简洁、高效和易于理解,因此在开发大型项目时具有很高的灵活性和可扩展性。
二、安装Go语言环境
- 下载Go语言安装包:访问Go语言官网(golang.org/dl/)下载适合你操作…
- 安装Go语言:运行下载的安装包,按照提示进行安装。建议将Go语言安装到系统的PATH环境变量中,以便在命令行中直接使用go命令。
- 验证安装:打开命令行,输入
go version,如果显示出Go语言的版本信息,说明安装成功。
三、Go语言基础语法
- 变量声明和赋值
package main
import "fmt"
func main() {
var a int = 10 // 声明一个整型变量a,并赋值为10
b := "Hello, Go!" // 声明一个字符串变量b,并赋值为"Hello, Go!"
}
- 常量声明
package main
import "fmt"
const PI = 3.1415926 // 声明一个常量PI,值为3.1415926
- 数据类型
- bool:布尔类型,表示真或假。true表示真,false表示假。
- byte:字节类型,取值范围为0-255。
- int:整型,32位有符号整数。取值范围为-2^31 ~ 2^31-1。
- rune:Unicode码位类型,用于表示单个Unicode字符。取值范围为0~maxUint16。
- uint:无符号整型,32位无符号整数。取值范围为0~2^32-1。
- float32:单精度浮点数,32位浮点数。取值范围约为±3.4E+38 ~ ±1.2E-45。
- float64:双精度浮点数,64位浮点数。取值范围约为±4.9E+308 ~ ±1.7E-45。
- string:字符串类型,用于表示文本数据。可以包含任意字符序列,包括空字符'0'。
- []byte:字节切片类型,用于表示一系列字节数据。长度固定,不能修改。可以通过索引访问元素,但不能修改元素值。
- map[T]V:映射类型,用于存储键值对。键类型为T,值类型为V。键必须是唯一的,但值可以重复。可以使用make函数创建映射类型的变量。
- struct:结构体类型,用于表示复杂的数据结构。可以包含多个不同类型的字段,包括基本类型、指针类型和引用类型。可以使用make函数创建结构体的实例。
- interface{}:“空接口”,用于表示任意类型的值。可以赋值给任何类型的变量,但不能直接访问其字段。需要通过类型断言来获取实际的值或方法。
四、常用特性解析
- 控制结构(if、for、switch)
package main
import "fmt"
func main() {
x := 10 // x是一个整型变量,值为10
y := x + 5 // y是一个整型变量,值为x+5=15(因为x是int类型)
z := float64(x) + float64(y) // z是一个浮点型变量,值为x+y(转换为float64类型后)的和(即15.0)
}
- 并发编程(goroutine、channel、select)
package main
import (
"fmt" // 导入fmt包以使用print函数打印输出结果
"time" // 导入time包以使用Sleep函数实现延时操作(模拟耗时任务)
)
func main() {
go func() { // 定义一个匿名函数作为goroutine的入口函数(协程)并启动执行(不会阻塞主函数)
for i := 0; i < 5; i++ { // 在协程中执行循环任务(模拟耗时操作)
fmt.Println("Coroutine", i) // 打印输出协程编号i(仅在当前协程中可见)和时间戳(模拟耗时任务)
time.Sleep(time.Second) // 每隔1秒执行一次延时操作(模拟耗时任务)
}
}() // 将协程的入口函数传递给runtime.goexit()函数(在协程执行完毕后退出程序),并立即启动协程(不会阻塞主函数)
fmt.Println("Main function") // 在主函数中执行打印输出操作(不会被协程阻塞)
}