Go语言入门心法(五): 函数

Go语言入门:函数、数据结构与高级特性,
本文介绍了Go语言的基础语法,包括函数声明、匿名函数、参数简写、返回值简化,以及函数变量、可变参数、闭包和延迟执行等高级概念。后续章节涉及结构体、接口、异常处理、并发编程、数据库操作和GORM框架的应用。


Go语言入门心法(一): 基础语法

Go语言入门心法(二): 结构体

Go语言入门心法(三): 接口

Go语言入门心法(四): 异常体系

 Go语言入门心法(五): 函数

Go语言入门心法(六): HTTP面向客户端|服务端编程

Go语言入门心法(七): 并发与通道

Go语言入门心法(八): mysql驱动安装报错onnection failed

Go语言入门心法(九): 引入三方依赖

Go语言入门心法(十):Go语言操作MYSQL(CRUD)|事务处理

Go语言入门心法(十一): 文件处理

Go语言入门心法(十二): GORM映射框架

Go语言入门心法(十三): 反射认知升维


 一: go语言函数认知 


函数相关认知升维:

函数的功能就是把相对独立的某个相同或者时类型的功能抽象处理,使之成为一个独立的实体;这样可以避免重复代码的编写;
  (1)函数的声明: func 函数名(参数列表) (返回参数列表) {
                       函数体
                    }
  (2)匿名函数声明: func(参数列表) (返回参数列表) {
                        函数体
                     }
  (3)函数不需要返回值时,省略返回值参数的列表;
    函数参数的简写: (3.1)如果函数的参数列表的类型相同时,可以省略前面参数的类型,只写后一个参数的类型;
    函数返回值简写: (3.2)如果函数参数的返回值都是同一类型,在返回值列表中可将返回参数省略
  (4)匿名函数声明同时赋值
       func(形参列表)(返回值列表){
           函数体
       }(实参列表)

package main

import "fmt"

/*
函数相关认知升维:

						函数的功能就是把相对独立的某个相同或者时类型的功能抽象处理,使之成为一个独立的实体;这样可以避免重复代码的编写;
					    (1)函数的声明: func 函数名(参数列表) (返回参数列表) {
					        函数体
					     }
				        (2)匿名函数声明: func(参数列表) (返回参数列表) {
				            函数体
				         }
			             (3)函数不需要返回值时,省略返回值参数的列表;
		                 函数参数的简写: (3.1)如果函数的参数列表的类型相同时,可以省略前面参数的类型,只写后一个参数的类型;
		                 函数返回值简写: (3.2)如果函数参数的返回值都是同一类型,在返回值列表中可将返回参数省略
	                     (4)匿名函数声明同时赋值
	                      func(形参列表)(返回值列表){
	                        函数体
	                      }(实参列表)
*/
func main() {
	// 函数赋值给变量
	var a = add
	// 调用函数
	println("调用add函数: ", a(12, 22))
	// 使用函数作为类型声明一个函数变量
	var b func(t, m int) (sub int)
	println("函数b = ", b)
	// 给函数变量b 赋值同类型的函数
	b = subtraction
	println("使用函数声明函数变量并调用函数: ", b(500, 200))

	print("调用无返回值的函数: ")
	printStr("无参函数")
	println()
	println("声明同时调用匿名函数")
	println()
	println()
	println("=========================声明同时调用匿名函数=========================")
	func(data string) {
		println("声明匿名函数的同时调用匿名函数: ", data)
	}("匿名函数的实参")

	println()
	println("========================先声明在调用匿名函数==========================")
	f1 := func(a, b int) (t int) {
		t = a * b
		return t
	}
	println("调用匿名函数[使用先声明后调用的方方式]: ", f1(5, 6))

}

// 定义add函数
func add(x int, y int) (sum int) {
	sum = x + y
	return sum
}

// 定义subtraction函数,同类型参数,省略前面变量的类型
func subtraction(a, b int) (sub int) {
	if a > b {
		sub = a - b
	} else {
		sub = b - a
	}
	return sub
}

// 无返回值的函数省略返回值列表
func printStr(content string) {
	fmt.Printf("传入的参数 %v", content)
}

运行效果:


GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToGrammar_go.exe D:\program_file\go_workspace\org.jd.data\funcation\OOPFunctionToGrammar.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToGrammar_go.exe
调用add函数:  34
函数b =  0x0
使用函数声明函数变量并调用函数:  300
调用无返回值的函数: 传入的参数 无参函数
声明同时调用匿名函数


=========================声明同时调用匿名函数=========================
声明匿名函数的同时调用匿名函数:  匿名函数的实参

========================先声明在调用匿名函数==========================
调用匿名函数[使用先声明后调用的方方式]:  30

Process finished with the exit code 0

二: go语言可变参数与函数变量


函数变量||函数可变参数:

   在go语言中,函数是一种类型,可以将其保存在变量中
   函数变量的声明如下:
   var 变量名称 func(形成列表)(返回值列表)

       func 函数名(实参列表,...参数类型)(返回值类别){函数体 }


package main

import "fmt"

/*
函数变量||函数可变参数:

	在go语言中,函数是一种类型,可以将其保存在变量中
	函数变量的声明如下:
	var 变量名称 func(形成列表)(返回值列表)
*/
func main() {

	println("========================go语言中函数的声明======================")
	a := 100
	b := 20
	var f1 func(x int, y int) (sum int, sub int)
	f1 = addSub
	sum, sub := f1(a, b)

	fmt.Println(a, "+", b, sum)
	fmt.Println(a, "-", b, sub)
	println("调用返回默认值的函数: ")
	e, f, g := defaultValue()
	fmt.Printf("调用函数返回默认值分别为: %v ,%v ,%v ", e, f, g)
	h, m, n := defaultValueInit()
	println()
	fmt.Printf("调用函数返回默认值分别为: %v ,%v ,%v \n", h, m, n)
	println()
	println()
	fmt.Println("1+2+3+4+5+6+7+8+9+10 = ", addSum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))

	println("===========================来看看go语言内置的可变参数的函数===========================")
	println(`
         看看println函数的源代码:
         func println(args ...Type)
         看看fmt.printf函数的源代码:

         func Printf(format string, a ...any) (n int, err error) {
	          return Fprintf(os.Stdout, format, a...)
         }
    `)

}

// 定义函数是给出默认的返回值
func defaultValue() (a int, b string, c bool) {
	return
}

// 定义函数是给出默认的返回值
func defaultValueInit() (a string, b string, c bool) {
	return "1", "", false
}

func addSub(x int, y int) (sum int, sub int) {
	sum = x + y
	sub = x - y
	return sum, sub
}

// 定义可变参数函数
func addSum(slice ...int) int {
	sum := 0
	for _, value := range slice {
		sum = sum + value
	}
	return sum
}

运行效果:


GOROOT=D:\program_file_worker\go1.20 #gosetup
GOPATH=D:\program_file_worker\go1.20\bin;C:\Users\Administrator\go #gosetup
D:\program_file_worker\go1.20\bin\go.exe build -o C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToParameterUserMultParams_go.exe D:\program_file\go_workspace\org.jd.data\funcation\OOPFunctionToParameterUserMultParams.go #gosetup
C:\Users\Administrator\AppData\Local\Temp\GoLand\___go_build_OOPFunctionToParameterUserMultParams_go.exe
========================go语言中函数的声明======================
100 + 20 120
100 - 20 80
调用返回默认值的函数:
调用函数返回默认值分别为: 0 , ,false
调用函数返回默认值分别为: 1 , ,false


1+2+3+4+5+6+7+8+9+10 =  55
===========================来看看go语言内置的可变参数的函数===========================


         看看println函数的源代码:
         func println(args ...Type)
         看看fmt.printf函数的源代码:

         func Printf(format string, a ...any) (n int, err error) {
                  return Fprintf(os.Stdout, format, a...)
         }


Process finished with the exit code 0
 

三: 函数闭包认知


四: 函数延迟执行|内置函数


忙着去耍帅,后期补上..........

【ACDC微电网的能源管理策略】微电网仿真模型包括光伏发电机、燃料电池系统、超级电容器和直流侧的电池,包括电压源变换器(VSC),用于将微电网的直流侧与交流侧相连接Simulink仿真实现内容概要:本文介绍了一个用于ACDC微电网能源管理策略研究的Simulink仿真模型,该模型集成了光伏发电机、燃料电池系统、超级电容器和直流侧电池等多种分布式能源与储能装置,并通过电压源变换器(VSC)实现微电网直流侧与交流侧的连接。文档重点在于构建包含多能源协调控制与能量管理策略的仿真系统,可用于研究微电网在并网与孤岛模式下的稳定运行、能量优化分配及动态响应特性,体现了对复杂电力电子接口与多源协同控制的建模能力。; 适合人群:电力系统、新能源发电、微电网控制及相关领域的科研人员与工程技术人员,具备一定的MATLAB/Simulink仿真基础和电力电子知识背景;研究生及高年级本科生亦可参考学习。; 使用场景及目标:①开展微电网多能源系统建模与仿真验证;②研究VSC在交直流互联中的控制策略;③设计与优化微电网能量管理策略(EMS);④支持科研项目、课程设计或毕业设计中的系统仿真环节。; 阅读建议:建议结合MATLAB/Simulink环境实际操作,逐步搭建模型并调试各组件参数,重点关注VSC控制逻辑与储能协调机制的设计,同时可拓展加入更多智能优化算法(如PSO、MPC)实现高级能量管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值