Golang 开发实战day07 - Functions

Golang 教程07 - Functions

1. Functions

1.1 什么是函数?

在 Golang 中,函数就像是代码的超级组合体,可以将一段代码封装成一个独立的单元,以便重复使用。

1.2 函数声明

go 复制代码
func funcName(parameter1 type1, parameter2 type2) returnType {
    // 函数体
}
  • func: 关键字,表示这是一个函数声明。
  • funcName: 函数名,由字母、数字、下划线组成,不能以数字开头。
  • parameter1 type1: 函数参数,可以有多个,每个参数都有类型。
  • returnType: 函数返回值,可以没有,如果有,则必须指定类型。
  • // 函数体: 函数的代码块,包含具体的逻辑。

1.3 示例

Example 1: 电话问候方法调用

go 复制代码
func sayGreeting (n string) {
	fmt.Printf("Good morning %v \n", n)
}
func sayBye(n string) {
	fmt.Printf("Goodbye %v \n", n)
}

func main() {
	ayGreeting("小叮当")
	sayGreeting("静香")
	sayBye("小叮当")
}

Output:

复制代码
Good morning 小叮当 
Good morning 静香 
Goodbye 小叮当 

Eample 2:多人之间问候

go 复制代码
func sayGreeting (n string) {
	fmt.Printf("Good morning %v \n", n)
}
func sayBye(n string) {
	fmt.Printf("Goodbye %v \n", n)
}

func cycleNames(n []string, f func(string)){
	for _, v := range n {
		f(v)
	}
}
func main() {
	cycleNames([]string{"大雄", "小夫", "胖虎"}, sayGreeting)
	cycleNames([]string{"大雄", "小夫", "胖虎"}, sayBye)
}

Output:

复制代码
Good morning 大雄 
Good morning 小夫 
Good morning 胖虎 
Goodbye 大雄 
Goodbye 小夫 
Goodbye 胖虎 

Eample3:求圆面积

复制代码
为了引用math.Pi方法,我们要import进入math的package
go 复制代码
import (
	"fmt"
	"math"
)
func circleArea(r float64) float64 {
	return math.Pi * r * r
}
func main() {
	a1 := circleArea(10.5)
	a2 := circleArea(15)

	fmt.Println(a1, a2)
	fmt.Printf("circle 1 is %0.3f and circle 2 is %0.3f", a1, a2)
}

Output:

复制代码
346.36059005827474 706.8583470577034
circle 1 is 346.361 and circle 2 is 706.858

总结

函数是 Golang 中重要的编程概念,可以帮助你将代码组织成更小的单元,提高代码的复用性和可维护性。当然,函数在你成为golang编写代码后也必是生产工作中不可或缺的一部分。

相关推荐
乌暮1 分钟前
深入理解 Java 泛型:把「万能盒子」用对、用稳
java·开发语言·后端·学习
架构技术专栏35 分钟前
Skill 有效性与稳定性评估:用对照、重复与证据判断价值
后端
2601_9622186138 分钟前
C语言中三种库的编译和使用方法
开发语言·c++
传奇开心果编程1 小时前
中庸、有容、破执:仓颉编程语言的中华智慧结晶——三重哲学境界思辨
开发语言·华为·开源·软件工程
jimy11 小时前
派生类重写基类虚函数(二):override的作用
开发语言·c++
拔剑纵狂歌1 小时前
ClickHouse system.query_log 字段详解与排障实践
后端·clickhouse·1024程序员节
_upupup1 小时前
异常(C++)
java·开发语言·jvm
再吃一根胡萝卜1 小时前
把本地 RAG 问答做"准":多轮指代消解 + 云端语义向量 + TXT 章节切分
后端
霸道流氓气质1 小时前
ComfyUI 图像生成工作流完全指南:从节点编排到Java生产级图像生产实战
java·开发语言·人工智能
怕浪猫2 小时前
2026年9月面18个后端
后端·面试·github