【Go语言入门学习笔记】Part5.函数

一、前言

这里的还是跟C有区别的,大家熟悉了其他语言后,还得注意一下这里的内容。Go的函数非常灵活。

二、学习代码

Go 复制代码
package main

import "fmt"

// ZhengXing 类似typedef的方法
type ZhengXing int

// 函数名有说法,首字母大写是public的,小写是private的
// func 函数名 形参 返回参数类型
func add(num1 int, num2 int) float32 {
	num3 := float32(num1 + num2)
	return num3
}

func putFuncIn(num int, function func(int, int) float32) int {
	sum := num + int(function(7, 8))
	return sum

}

func main() {
	var num1, num2 int
	num1, num2 = 1, 2
	num1, num2 = num2, num1
	fmt.Println(num1, num2)
	fmt.Println(add(1, 2))
	fmt.Println(Double2(2))
	//返回多个参数,如下
	doubleIt, flag := TwoReturn(100)
	fmt.Println(doubleIt)
	fmt.Println(flag)
	//多个,不清楚多少参数的时候,如下
	fmt.Println(ManyNums(1, 2))
	fmt.Println(ManyNums(1, 2, 3, 4, 5))
	//需要注意变量的作用域问题,函数内的不会影响到main的
	//指针可以让函数内修改main变量,同C,如下
	var num int = 64
	ptrSetting(&num)
	fmt.Println(num)
	//可以给函数做成变量,感觉有点像是换名字,类似于函数指针
	a := add
	a(1, 6)
	fmt.Printf("%T\n", a)
	//a也可以当变量传入其他函数
	fmt.Println(putFuncIn(100, a))
	//自定义数据类型
	var num5 ZhengXing = 111
	fmt.Println(num5)
	//可以在函数头指明要返回谁
	fmt.Println(sumAndSub(3, 4))
}
Go 复制代码
package main

func Double2(x int) int {
	return x * x
}

func TwoReturn(num int) (int, bool) {
	var judge bool
	if num > 10 {
		judge = true
	} else {
		judge = false
	}
	return num * num, judge
}

func ManyNums(args ...int) int {
	var sum int
	for i := 0; i < len(args); i++ {
		sum += args[i]
	}
	return sum
}

func ptrSetting(ptr *int) {
	*ptr++
	return
}

func sumAndSub(a, b int) (sum, sub int) {
	sum = a + b
	sub = a - b
	return
}
相关推荐
阿伟来咯~4 分钟前
记录学习react的一些内容
javascript·学习·react.js
许野平19 分钟前
Rust: 利用 chrono 库实现日期和字符串互相转换
开发语言·后端·rust·字符串·转换·日期·chrono
也无晴也无风雨22 分钟前
在JS中, 0 == [0] 吗
开发语言·javascript
Suckerbin26 分钟前
Hms?: 1渗透测试
学习·安全·网络安全
狂奔solar30 分钟前
yelp数据集上识别潜在的热门商家
开发语言·python
水豚AI课代表37 分钟前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc
聪明的墨菲特i38 分钟前
Python爬虫学习
爬虫·python·学习
Diamond技术流1 小时前
从0开始学习Linux——网络配置
linux·运维·网络·学习·安全·centos
密码小丑1 小时前
11月4日(内网横向移动(一))
笔记
斑布斑布1 小时前
【linux学习2】linux基本命令行操作总结
linux·运维·服务器·学习