Go基础编程:自定义函数
来源:互联网 发布:驾照模拟考试c1软件 编辑:程序博客网 时间:2024/06/05 04:51
定义格式
函数构成代码执行的逻辑结构。在Go语言中,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句。
Go 语言函数定义格式如下:
func FuncName(/*参数列表*/) (o1 type1, o2 type2/*返回类型*/) { //函数体 return v1, v2 //返回多个值}
函数定义说明:
- func:函数由关键字 func 开始声明
- FuncName:函数名称,根据约定,函数名首字母小写即为private,大写即为public
- 参数列表:函数可以有0个或多个参数,参数格式为:变量名 类型,如果有多个参数通过逗号分隔,不支持默认参数
- 返回类型:
① 上面返回值声明了两个变量名o1和o2(命名返回参数),这个不是必须,可以只有类型没有变量名
② 如果只有一个返回值且不声明返回值变量,那么你可以省略,包括返回值的括号
③ 如果没有返回值,那么就直接省略最后的返回信息
④ 如果有返回值, 那么必须在函数的内部添加return语句
函数定义
无参无返回值
func Test() { //无参无返回值函数定义 fmt.Println("this is a test func")}func main() { Test() //无参无返回值函数调用}
有参无返回值
普通参数列表
func Test01(v1 int, v2 int) { //方式1 fmt.Printf("v1 = %d, v2 = %d\n", v1, v2)}func Test02(v1, v2 int) { //方式2, v1, v2都是int类型 fmt.Printf("v1 = %d, v2 = %d\n", v1, v2)}func main() { Test01(10, 20) //函数调用 Test02(11, 22) //函数调用}
不定参数列表
不定参数类型
不定参数是指函数传入的参数个数为不定数量。为了做到这点,首先需要将函数定义为接受不定参数类型:
//形如...type格式的类型只能作为函数的参数类型存在,并且必须是最后一个参数func Test(args ...int) { for _, n := range args { //遍历参数列表 fmt.Println(n) }}func main() { //函数调用,可传0到多个参数 Test() Test(1) Test(1, 2, 3, 4)}
不定参数的传递
func MyFunc01(args ...int) { fmt.Println("MyFunc01") for _, n := range args { //遍历参数列表 fmt.Println(n) }}func MyFunc02(args ...int) { fmt.Println("MyFunc02") for _, n := range args { //遍历参数列表 fmt.Println(n) }}func Test(args ...int) { MyFunc01(args...) //按原样传递, Test()的参数原封不动传递给MyFunc01 MyFunc02(args[1:]...) //Test()参数列表中,第1个参数及以后的参数传递给MyFunc02}func main() { Test(1, 2, 3) //函数调用}
无参有返回值
有返回值的函数,必须有明确的终止语句,否则会引发编译错误。
一个返回值
func Test01() int { //方式1 return 250}//官方建议:最好命名返回值,因为不命名返回值,虽然使得代码更加简洁了,但是会造成生成的文档可读性差func Test02() (value int) { //方式2, 给返回值命名 value = 250 return value}func Test03() (value int) { //方式3, 给返回值命名 value = 250 return}func main() { v1 := Test01() //函数调用 v2 := Test02() //函数调用 v3 := Test03() //函数调用 fmt.Printf("v1 = %d, v2 = %d, v3 = %d\n", v1, v2, v3)}
多个返回值
func Test01() (int, string) { //方式1 return 250, "sb"}func Test02() (a int, str string) { //方式2, 给返回值命名 a = 250 str = "sb" return}func main() { v1, v2 := Test01() //函数调用 _, v3 := Test02() //函数调用, 第一个返回值丢弃 v4, _ := Test02() //函数调用, 第二个返回值丢弃 fmt.Printf("v1 = %d, v2 = %s, v3 = %s, v4 = %d\n", v1, v2, v3, v4)}
有参有返回值
//求2个数的最小值和最大值func MinAndMax(num1 int, num2 int) (min int, max int) { if num1 > num2 { //如果num1 大于 num2 min = num2 max = num1 } else { max = num2 min = num1 } return}func main() { min, max := MinAndMax(33, 22) fmt.Printf("min = %d, max = %d\n", min, max) //min = 22, max = 33}
阅读全文
0 0
- Go基础编程:自定义函数
- Go编程基础—函数(func)
- Go基础编程:包
- Go语言基础:函数
- go基础-函数
- Go基础编程:基础数据类型
- Go Web编程一: Go Web 基础
- Go编程基础—go常用命令
- Go基础编程:Go语言介绍
- Go基础编程:第一个Go程序
- Go基础编程:递归函数、函数类型、匿名函数与闭包
- Go语言编程基础01
- Go语言编程基础2
- Go Web编程:Web基础
- Go编程基础—常量
- Go编程基础—格式化
- Go基础编程:环境搭建
- Go基础编程:运算符
- 用消息系统实现分布式事务
- 【Shell脚本(二)】运算符,命令和文件
- C#关于数组排序
- 1036. 跟奥巴马一起编程(15)
- python小程序:把名称列表从csv文件读入mongo,再从mongo导入redis(anaconda3.5.2)
- Go基础编程:自定义函数
- 时间换算
- Python yield 斐波那契数列
- RHEL各个版本的技术容量与限制
- 关于REST API的为什么
- mac-Linux一般操作
- 操作系统总结一
- 衷心感谢你的光临
- Locust的API介绍-----TaskSet类和task decorator