Go 函数与流程控制

71 阅读2分钟

前言

本文档旨在介绍Go语言中函数的定义与使用,以及各种控制流语句的示例。通过本文档,读者将了解函数的基本概念和语法,以及如何使用if-else、switch、for和select等流程控制语句。

函数定义使用

在这一部分,将介绍如何定义和使用函数,并提供相关的示例代码。

① func 定义函数 fn1为函数名

② 调用函数传入的类型

③ 函数的参数 类型

④ 函数返回类型

funcfn1[T any](③x int, y T) ④(int, T) {
	return x, y
}
fn1[int](10, 8)

if else 流程控制

这一部分将详细说明如何使用if-else语句进行条件控制,并提供相应的示例代码。

func useIfElse(b bool) {
	if b {
		fmt.Println(1)
	} else {
		fmt.Println(0)
	}
}

Switch流程控制

这一部分将介绍使用switch语句进行多条件判断的方法,并提供相应的示例代码。

// 选择控制
func useSwitch(b int) {
	switch {
	case b == 3:
		fmt.Println("==3")
	case b < 3:
		fmt.Println("b<3")
	case b > 3:
		fmt.Println("b>3")
	default:
		fmt.Println("default")
	}
}

for流程控制

在这一部分,将讨论如何使用for循环进行迭代控制,并提供相关的示例代码。

// 循环控制
func useFor() {
	// for的关键字 Continue 跳出某次循环 Break 结束循环
	arr := []int{1, 2, 3, 4}
	// i index v item
	{
		for i := 0; i < len(arr); i++ {
			if i == 2 {
				fmt.Println("for循环跳出", i, arr[i])
				continue
			}
			fmt.Println("for循环", i, arr[i])
		}
	}
	// i index v item
	{
		for i, v := range arr {
			if i == 2 {
				fmt.Println("range循环结束", i, arr[i])
				break
			}
			fmt.Println("range循环", i, v)
		}
	}
}

select流程控制

这一部分将介绍使用select语句管理通道通信的方法,并提供相应的示例代码。

// 通道控制
func useSelect() {
	ch1 := make(chan string)
	ch2 := make(chan string)

	go func() {
		time.Sleep(2 * time.Second)
		ch1 <- "Hello"
	}()
	go func() {
		time.Sleep(3 * time.Second)
		ch2 <- "World"
	}()

	select {
	case msg1 := <-ch1:
		fmt.Println("Received:", msg1)
	case msg2 := <-ch2:
		fmt.Println("Received:", msg2)
	case <-time.After(1 * time.Second):
		fmt.Println("Timeout")
	}
}

结论

通过本文档的阅读,读者应该对Go语言中的函数定义与使用以及各种流程控制语句有了更深入的理解。希望本文档能够帮助读者更好地学习和应用Go语言编程技术。

2024/3/3 ☀