【Golang】Go语言函数

Go语言函数

文章目录

Go函数特点

  • 无需声明原型
  • 支持不定 变参
  • 支持多返回值
  • 支持匿名函数和闭包
  • 函数也是一种类型,一个函数可以赋值给变量
  • 不支持嵌套,一个包不能有两个名字一样的函数
  • 不支持 重载
  • 不支持 默认参数

一、函数的基本格式定义

go 复制代码
package main

import "fmt"

func main() {
    // 调用函数
	a(3, "现在是大于1")

}

// 定义一个名为 a 的函数
// 传递两个变量 (类型: int string)
func a(data1 int, data2 string) {

	if data1 > 1 {
		fmt.Println(data1)
	} else {
		fmt.Println(data2)
	}

}
go 复制代码
package main

import "fmt"

func main() {
    // r1和r2将会对应接收返回参数ret1和ret2
	r1, r2 := a(0, "现在是小于1")
	fmt.Println(r1, r2)

}

func a(data1 int, data2 string) (ret1 int, ret2 string) {

	ret1 = data1
	ret2 = data2
    // 直接写一个return相当中: return ret1, ret2
	return

}

二、匿名函数

bash 复制代码
func main() {

	b := func(data1 string) {
		fmt.Printf(data1)
	}
	b("我是匿名函数")

}

三、自执行函数

  • 自执行函数只会执行一次
go 复制代码
func main() {

	(func() {
		fmt.Println("执行一次函数")
	})()

}

四、闭包函数

  • 一个函数返回一个函数就叫闭包函数
go 复制代码
func main() {
	mo()(4)
}

func mo() func(int) {
	return func(num int) {
		fmt.Println("闭包函数", num)
	}

}

五、延迟调用

go 复制代码
func main() {
	defer mo()  // 虽然放在了第一个, 但是前面加上defer就会变为最后一个执行
	fmt.Println("这是第一个执行")
	fmt.Println("这是第二个执行")

}

func mo() {
	fmt.Println("我想第一个执行")
}
相关推荐
二哈喇子!3 小时前
若依【(前后端分离版)SpringBoot+Vue3】
java·spring boot·后端
paopaokaka_luck3 小时前
婚纱摄影管理系统(发送邮箱、腾讯地图API、物流API、webSocket实时聊天、协同过滤算法、Echarts图形化分析)
vue.js·spring boot·后端·websocket·算法·echarts
一只小风华~3 小时前
JavaScript 函数
开发语言·前端·javascript·ecmascript·web
苕皮蓝牙土豆3 小时前
Qt 分裂布局:QSplitter 使用指南
开发语言·qt
Brookty6 小时前
Java线程安全与中断机制详解
java·开发语言·后端·学习·java-ee
你的人类朋友7 小时前
❤️‍🔥BFF架构版的hello world
前端·后端·架构
孟婆来包棒棒糖~7 小时前
SpringCloude快速入门
分布式·后端·spring cloud·微服务·wpf
從南走到北7 小时前
JAVA东郊到家按摩服务同款同城家政服务按摩私教茶艺师服务系统小程序+公众号+APP+H5
android·java·开发语言·微信小程序·小程序
雾林小妖7 小时前
springboot集成deepseek
java·spring boot·后端
遇见尚硅谷8 小时前
C语言:20250728学习(指针)
c语言·开发语言·数据结构·c++·笔记·学习·算法