Go-01 | 豆包MarsCode AI 刷题”

96 阅读6分钟

这段笔记详细讲解了Go语言中的基本程序结构、变量和常量的声明与用法、循环控制结构(包括for循环的不同形式)、条件判断结构(if-else)以及选择控制语句(switch),提供了核心知识点、基本语法和典型应用场景的解释,请根据目录快速检索和入门。

走进 Go 语言基础语法

01-hello

package main

import (
	"fmt"
)

func main() {
	fmt.Println("hello world")
}

核心知识点:

这段代码展示了Go语言的基本程序结构。Go语言的程序通常从 main 包中的 main 函数开始执行,fmt 是一个标准库包,用于格式化输入和输出。

基本语法:

  • package main: 表示当前文件所属的包为 main。Go程序的入口必须是 main 包。
  • import "fmt": 引入 fmt 包用于输入输出操作。
  • func main(): 定义程序的入口函数 main,无参数也无返回值。
  • fmt.Println("hello world"): 使用 fmt 包中的 Println 函数向标准输出打印并换行。

应用场景:

这种简单的打印“Hello, World!”程序是常见的编程语言入门示例。它用于验证开发环境的设置是否正确,同时可以理解程序的基本结构与标准输出方法。

02-var

package main

import (
	"fmt"
	"math"
)

func main() {

	var a = "initial"

	var b, c int = 1, 2

	var d = true

	var e float64

	f := float32(e)

	g := a + "foo"
	fmt.Println(a, b, c, d, e, f) // initial 1 2 true 0 0
	fmt.Println(g)                // initialapple

	const s string = "constant"
	const h = 500000000
	const i = 3e20 / h
	fmt.Println(s, h, i, math.Sin(h), math.Sin(i))
}

核心知识点:

这段代码展示了Go语言中的变量和常量声明方法。Go支持显式的类型定义以及通过自动推断类型的变量声明方式。var 关键字用于声明变量,const 关键字用于声明常量。Go也支持短变量声明 := 来简化变量赋值操作。

基本语法:

  • var a = "initial": 使用 var 关键字定义变量 a,并由赋值的表达式自动推断类型为 string
  • var b, c int = 1, 2: 定义多个变量并显式指定它们的类型为 int
  • var d = true: 定义布尔变量。
  • var e float64: 声明一个浮点型变量 e,默认值为 0
  • f := float32(e): 使用短声明语法 := 进行变量声明和初始化,类型由 float32(e) 确定。
  • g := a + "foo": 字符串连接。
  • const s string = "constant": 使用 const 关键字声明一个常量,值不可变。
  • const h = 500000000: 常量支持没有显式类型。
  • const i = 3e20 / h: 常量可以参与常量级的表达式运算,编译时计算结果。

应用场景:

  • var 用于声明需要被修改或在不同作用域中访问的变量,适合管理程序状态。
  • 常量 const 通常用于定义不可变值,如配置参数、常用常量(如 π)等。
  • 通过 := 进行简洁的变量声明和初始化在临时变量和简化代码时非常有用。

03-for

package main

import "fmt"

func main() {

	i := 1
	for {
		fmt.Println("loop")
		fmt.Println(i)
		break
	}
	for j := 7; j < 9; j++ {
		fmt.Println(j)
	}

	for n := 0; n < 5; n++ {
		if n%2 == 0 {
			continue
		}
		fmt.Println(n)
	}
	for i <= 3 {
		fmt.Println(i)
		i = i + 1
	}
}

核心知识点:

这段代码展示了Go语言中的 for 循环的多种用法。Go语言中只有一种循环结构——for,但它可以像 whiledo-whilefor-each 等方式灵活使用。for 循环支持多种控制结构,包括无限循环、带条件的循环和带初始语句的循环。

基本语法:

  • for { ... }: 表示无限循环。循环体内通常会包含 break 语句来终止循环,或者其他逻辑条件控制跳出。
  • for j := 7; j < 9; j++ { ... }: 带初始值、条件判断和后置递增的 for 循环,类似于其他语言中的 for 语句。
  • if n%2 == 0 { continue }: continue 跳过当前循环的剩余部分并开始下一次迭代。
  • for i <= 3 { ... }: 在 for 循环中使用条件判断,这种形式可以替代传统的 while 循环。

应用场景:

  • 无限循环(for { ... })通常用于需要持续运行的程序,例如服务器或后台任务,但一般配合 break 和条件逻辑使用。
  • 带初始值和递增的 for 结构适用于明确次数的迭代操作,如数组遍历或计数循环。
  • 使用条件判断的 for 可灵活处理不同条件下的循环执行。
  • continue 用于跳过当前循环的某些情况,适合过滤和条件判断。

04-if

package main

import "fmt"

func main() {

	if 7%2 == 0 {
		fmt.Println("7 is even")
	} else {
		fmt.Println("7 is odd")
	}

	if 8%4 == 0 {
		fmt.Println("8 is divisible by 4")
	}

	if num := 9; num < 0 {
		fmt.Println(num, "is negative")
	} else if num < 10 {
		fmt.Println(num, "has 1 digit")
	} else {
		fmt.Println(num, "has multiple digits")
	}
}

核心知识点:

这段代码展示了Go语言中 if-else 语句的用法。if 语句用于条件判断,可以和 elseelse if 组合使用来控制代码的执行路径。此外,Go语言中的 if 语句支持在条件表达式前定义一个短声明变量,这种方式使得变量的作用域只存在于 if-else 代码块内。

基本语法:

  • if condition { ... }: 基本 if 语句结构,用于在条件为 true 时执行代码块。
  • else { ... }: 可选的 else 子句,只有 if 条件为 false 时才执行。
  • else if condition { ... }: 结合多个条件分支的中间检查条件。允许扩展条件判断的范围。
  • if num := 9; num < 0 { ... } else if ... { ... }: if 语句中包含短声明。这里的 num 变量仅在 if-else 语句的作用域内有效。

应用场景:

  • if-else 语句用于条件逻辑判断,是控制程序流的核心结构之一。
  • 短声明的 if 语法适用于需要临时变量的逻辑判断,可以避免在更大的作用域中引入不必要的变量。
  • 多条件判断通常通过 else if 处理,适用于多步骤检查和分支路径选择。

05-switch

package main

import (
	"fmt"
	"time"
)

func main() {

	a := 2
	switch a {
	case 1:
		fmt.Println("one")
	case 2:
		fmt.Println("two")
	case 3:
		fmt.Println("three")
	case 4, 5:
		fmt.Println("four or five")
	default:
		fmt.Println("other")
	}

	t := time.Now()
	switch {
	case t.Hour() < 12:
		fmt.Println("It's before noon")
	default:
		fmt.Println("It's after noon")
	}
}

核心知识点:

这段代码展示了Go语言中的 switch 语句的用法。Go的 switch 是一种控制语句,用于简洁地选择代码执行路径。与许多其他语言不同,Go中的 switch 语句在匹配一个 case 后会自动终止,而无需显式使用 break 语句。它支持简单条件和无表达式的 switch 语法,非常灵活。

基本语法:

  • switch variable { case value: ... }: 基本的 switch 语句结构。它会比较 variablecase 语句中的值。
  • case 4, 5:: 支持多个值匹配,可以在同一个 case 子句中匹配多个值。
  • default:: 类似 else 子句,当没有匹配的 case 时执行 default 子句。
  • switch { case condition: ... }: 无表达式 switch,用于在 case 子句中编写条件表达式,非常适合区间和布尔判断。

应用场景:

  • switch 语句用于替代多个 if-else 语句,可以更简洁地处理值匹配和条件判断。
  • 无表达式的 switch 语法允许更灵活的条件控制,适用于复杂条件分支判断,如时间、布尔表达式或特定条件的检查。
  • 支持多个值的 case 匹配,适合处理多个可能值共享同一个逻辑块的情况。