Go语言基础 | 豆包MarsCode AI刷题

72 阅读4分钟

一、Go 语言基础语法

  1. 变量声明与初始化

    • 声明变量

      • 在 Go 语言中,可以使用var关键字来声明变量。例如,var age int声明了一个名为age的整数类型变量。变量在声明后会被自动初始化为其类型的零值。对于整数类型,零值是 0;对于字符串类型,零值是空字符串"";对于布尔类型,零值是false
    • 初始化变量

      • 可以在声明变量时进行初始化,如var name string = "John"。Go 语言还支持简短声明方式,使用:=操作符。例如,count := 10声明并初始化了一个名为count的整数变量。但要注意,简短声明只能在函数内部使用。
  2. 数据类型

    • 基本数据类型

      • 整数类型:Go 语言有多种整数类型,包括int(根据操作系统平台可能是 32 位或 64 位)、int8(8 位有符号整数)、int16(16 位有符号整数)、int32(32 位有符号整数)、int64(64 位有符号整数)。还有对应的无符号整数类型uintuint8等。例如,var num int32 = 100
      • 浮点类型float32float64用于表示小数。float32的精度较低,float64精度更高,更常用。如var pi float64 = 3.14159
      • 布尔类型:只有truefalse两个值,用于条件判断等。例如,var isTrue bool = true
      • 字符串类型:用双引号""包裹,是不可变的字符序列。例如,var greeting string = "Hello, World!"
    • 复合数据类型

      • 数组(Array) :是具有固定长度的同类型元素的集合。例如,var numbers [5]int声明了一个包含 5 个整数的数组。可以通过索引来访问和修改数组元素,如numbers[0] = 1
      • 切片(Slice) :切片是对数组的抽象,它可以动态地增长和收缩。可以通过make函数创建切片,如s := make([]int, 3)创建了一个长度为 3 的整数切片。切片支持很多操作,如append函数可以添加元素,s = append(s, 4)会在切片s的末尾添加元素 4。
      • 结构体(Struct) :用于组合不同类型的数据。例如,type Person struct {name string; age int}定义了一个名为Person的结构体,然后可以创建结构体变量p := Person{"Alice", 25}
  3. 控制流语句

    • 条件语句(if - else)

      • 用于根据条件执行不同的代码块。例如,if temperature > 30 {fmt.Println("It's hot")} else {fmt.Println("It's not hot")},这里根据温度变量temperature的值来决定输出的内容。
    • 循环语句(for)

      • Go 语言的for循环功能强大。最基本的形式是for i := 0; i < 10; i++ {fmt.Println(i)},这会打印从 0 到 9 的数字。for循环还可以用于遍历数组、切片等数据结构,如numbers := []int{1, 2, 3}; for _, num := range numbers {fmt.Println(num)},这里range关键字用于遍历切片numbers_表示忽略索引(如果不需要的话)。

二、Go 语言常用特性

  1. 函数(Function)

    • 定义函数:使用func关键字定义函数。例如,func add(a, b int) int {return a + b}定义了一个名为add的函数,它接受两个整数参数ab,并返回它们的和。
    • 函数参数和返回值:函数可以有多个参数和返回值。例如,func swap(a, b int) (int, int) {return b, a}实现了交换两个整数的功能,它返回两个值。
    • 函数作为参数和返回值:Go 语言支持将函数作为参数传递给其他函数,也可以作为函数的返回值。例如,func calculate(op func(int, int) int, a, b int) int {return op(a, b)},这里op是一个函数类型的参数,可以传入不同的数学运算函数。
  2. 并发编程(Concurrency)

    • Go 协程(Goroutine) :Go 协程是一种轻量级的线程,通过go关键字来启动。例如,go func() {fmt.Println("Hello from a goroutine")}会启动一个新的协程来执行匿名函数中的代码。多个协程可以同时运行,大大提高了程序的并发性能。
    • 通道(Channel) :通道用于协程之间的通信和同步。可以使用make函数创建通道,如ch := make(chan int)创建了一个整数类型的通道。协程可以通过<-操作符来发送和接收数据,如ch <- 5(发送数据)和num := <-ch(接收数据)。通道可以是无缓冲的(同步通道)或者有缓冲的(异步通道),有缓冲的通道可以存储一定数量的数据,例如ch := make(chan int, 3)创建了一个可以存储 3 个整数的缓冲通道

Go语言具有强大的并发编程能力、高效的执行性能和丰富的生态系统,因此在服务器端开发、网络编程、数据处理、云计算、微服务、Web开发等领域都有广泛的应用。