《10节课学会Golang-03-函数》

微信关注【面试情报局】我们一起干翻面试官, 回复golang获取本文源码
视频地址:b站 10节课学会Golang,Go快速入门

函数

在 Go 语言中,函数是一种基本的代码块,用于执行某些操作并返回结果。函数用来划分不同功能, 我们可以将不同的功能封装成不同的函数,减少主干逻辑的复杂度。

函数定义

Golang中通过关键字func定义一个函数, 并指定函数名称、参数列表和返回类型。 格式func functionName(parameterName T,....) resultName T ...{}

package main

import "fmt"

// 定义一个 print 函数, 它接受 0 个参数,返回 0 个值
func print() {
	fmt.Println("hello world")
}

// 定义一个 add 函数, 它接受两个 int 类型的参数,返回 一个 int 类型的值 (参数的声明请看下一章)
func add(x int, y int) int {
	return x + y
}

// 定义一个 swap 函数, 它接受两个 int 类型的参数,返回 两个 int 类型的值
func swap(x, y int) (int, int) {
	return y, x
}

// Go 的返回值可被命名,它们会被视作定义在函数顶部的变量
func swap2(x, y int) (a int, b int) {
	a = y
	b = x
	return
}

// 传递不定长参数
func variableCut(x int, y ...int) int {
	for _, v := range y {
		x += v
	}
	return x
}

// 值类型参数
func modifyValue(x int) {
	x = x * 10
}

// 指针类型参数
func modifyPointer(x *int) {
	*x = (*x) * 10
}

func main() {
	print()
	fmt.Printf("add() return: %d\n", add(1, 2))
	x, y := swap(1, 2)
	fmt.Printf("swap() x: %d, y: %d \n", x, y)
	fmt.Printf("advariableCutd() return: %d\n", variableCut(1, 2, 3, 4, 5))

	// 值类型传递与指针类型传递的区别
	//		值传递是指在调用函数时将实际参数复制一份传递到函数中,
  //       这样在函数中如果对参数进行修改,将不会影响到实际参数
	//		指针传递(引用传递)是指在调用函数时将实际参数的地址传递到函数中,
  //       那么在函数中对参数所进行的修改,将影响到实际参数
	x = 1
	modifyValue(x)
	fmt.Printf("modifyValue() return: %d\n", x)

	x = 1
	modifyPointer(&x)
	fmt.Printf("modifyPointer() return: %d\n", x)
}

Init函数

Go 语言中,init 函数是一个特殊的函数,用于在程序执行前自动执行一些初始化操作,例如初始化全局变量或加载配置文件等。init 函数没有任何参数和返回值,并且不能被显式调用。当程序启动时,Go 会自动在主函数执行之前调用所有包中的 init 函数,包括导入的所有包的 init 函数, init()函数执行完成后再执行main()函数

package main

import (
	"fmt"
)

// init 函数会在 main 函数之前执行,而且无需调用就会执行
func init() {
	fmt.Println("Golang Tutorial")
}

func main() {
	fmt.Println("Hello World")
}

跨包的init()函数调用

package main

import (
	"fmt"
	_ "golang-tutorial/3-function/test" // 引用 test 包, 会先执行 test 包的init函数
)

// init 函数会在 main 函数之前执行,而且无需调用就会执行
func init() {
	fmt.Println("Golang Tutorial")
}

func main() {
	fmt.Println("Hello World")
}

注意,Go 语言的初始化顺序是先导入所有包,然后按照包导入的顺序依次初始化每个包中的 constvarinit,最后调用 main 函数。

思考题

  1. 通过传参实现加减乘除这四个函数,如: 加法函数
func add(a,b int) int {
	return a+b
}
  1. 通过指针的方式实现加减乘除这四个函数,要求:加减乘除不能通过返回参数的形式收集结果
  2. 通过init函数给初始化全局变量str的值为"Hello Golang tutorial"

参考


系列文章

《10节课学会Golang-01-Package》
《10节课学会Golang-02-变量与常量》
《10节课学会Golang-03-函数》
《10节课学会Golang-04-流程控制》
《10节课学会Golang-05-结构体》
《10节课学会Golang-06-数组与切片》
《10节课学会Golang-07-Map》
《10节课学会Golang-08-Interface》
《10节课学会Golang-09-Goroutine》
《10节课学会Golang-10-Channel》

微信关注【面试情报局】我们一起干翻面试官, 回复golang获取本文源码

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

HTML网页设计-期末大作业

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值