0

0

go语言中fn是什么

小老鼠

小老鼠

发布时间:2023-04-17 11:46:51

|

2950人浏览过

|

来源于php中文网

原创

go语言中fn具体指的是关键字func,函数的基本组成为:关键字func、函数名、参数列表、返回值、函数体和返回语句,每一个程序都包含很多的函数,函数是基本的代码块,函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。

go语言中fn是什么

本教程操作系统:Windows10系统、GO1.20版、Dell G3电脑

Go语言函数声明(函数定义)

函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段,其可以提高应用的模块性和代码的重复利用率。Go 语言支持普通函数、匿名函数和闭包,从设计上对函数进行了优化和改进,让函数使用起来更加方便。

函数构成了代码执行的逻辑结构,在Go语言中,函数的基本组成为:关键字 func、函数名、参数列表、返回值、函数体和返回语句,每一个程序都包含很多的函数,函数是基本的代码块。

立即学习go语言免费学习笔记(深入)”;

因为Go语言是编译型语言,所以函数编写的顺序是无关紧要的,鉴于可读性的需求,最好把 main() 函数写在文件的前面,其他函数按照一定逻辑顺序进行编写(例如函数被调用的顺序)。

编写多个函数的主要目的是将一个需要很多行代码的复杂问题分解为一系列简单的任务来解决,而且,同一个任务(函数)可以被多次调用,有助于代码重用(事实上,好的程序是非常注意 DRY 原则的,即不要重复你自己(Don't Repeat Yourself),意思是执行特定任务的代码只能在程序里面出现一次)。

当函数执行到代码块最后一行}之前或者 return 语句的时候会退出,其中return语句可以带有零个或多个参数,这些参数将作为返回值供调用者使用,简单的return语句也可以用来结束for的死循环,或者结束一个协程(goroutine)。

Go语言函数不需要声明

Go语言的函数是一等公民,和变量一样,可以赋值给某一变量(匿名函数产生的原因)

由于函数是一等公民, 所以以前定义变量所有的格式, 都可以用于定义函数类型的变量

    var 变量名称 函数类型
    var 变量名称 函数类型 = 匿名函数
    var 变量名称  = 匿名函数
    变量名称  := 匿名函数
    var(
        var 变量名称  = 匿名函数
    )
fn = func (a,b int){
    return a + b
}
fn()

Go语言中函数变量定义的方式和C语言不一样

格式: func函数名称( 形参列表 ) 返回值列表{}

Go语言中函数返回值可以不止一个

func test(a,b int) (a,b int){
    return a,b
}

Go语言函数返回值可以只写类型,也可以写变量+类型

只写类型:func test(a,b int) (int){} 注意:只写类型,返回值类型int两边的括号可以省略

变量加类型:func test(a,b int) (a,b int){}
注意点:当写变量+类型的形式时,return可以不加返回值,会自动寻找代码块的a和b

func test(a,b int) (a,b int){
      a = 100
      b = 99
      return //自动返回100,99}

Go语言形参列表或者返回值列表的类型如果相同,那么我们可以连续定义
如下:两个函数表示同一种方法

func test(a,b int) (a,b int){return a,b}
func test2(a int,b int) (int,int){return a,b}

由于Go语言函数可以有多个返回值,那么外界接收函数多个返回值的时候需要用多个变量来接收,但是Go语言中变量不使用会报错,所以我们如果有一个返回值不需要使用时,我们会用 _ 来接收, _ 在Go语言中有特定的含义,所以不能用作变量的标识符

匿名函数

PHP开发实用指南 2.0
PHP开发实用指南 2.0

对于一个刚进入PHP 开发大门的程序员,最需要的就是一本实用的开发参考书,而不仅仅是各种快速入门的only hello wold。在开发的时候,也要注意到许多技巧和一些“潜规则”。PHP是一门很简单的脚本语言,但是用好它,也要下功夫的。同时,由于PHP 的特性,我一再强调,最NB 的PHP 程序员都不是搞PHP 的。为什么呢?因为PHP 作为一种胶水语言,用于粘合后端 数据库和前端页面,更多需

下载

匿名函数就是没有名称的函数,定义后需要立即使用否则会报错

匿名函数通常情况只用做一次,由于是一等公民,可以作为函数的形参或者作为函数的返回值

作为函数的形参

fn  := func (a,b int) int {
  return a + b
}

//此时调用test函数用来计算a+b可以这么写
res := test(a,b,fn)

func test(a,b int,method func(int,int) int) func() {
  return method(a,b)
}

进一步演变

由于fn和是匿名函数赋值,所以我们可以直接将匿名函数传入test

//此时调用test函数用来计算a+b可以这么写
res := test(a,b,func (a,b int) int {
  return a + b
})

func test(a,b int,method func(int,int) int) func() {
  return method(a,b)
}

作为函数的返回值

fn := test()
fn()//打印匿名函数

func test() func() {
    return func() {
        fmt.Println("匿名函数")
    }
}

闭包(特殊的匿名函数)

返回的匿名函数中如果用到了外界的变量,那么就称为闭包

闭包的特点:"人在塔在"只要返回的匿名函数中用到了外界的变量,那么如果函数调用后还有使用到此匿名函数的情况,那么函数栈不会释放,一旦不再使用,函数栈才释放

fn := test()//test函数也被称为迭代器
fn()  //2
fn()  //3
fn()  //4

func test() func(){
     x := 1
     return func (){
            x++
            println(x)
        }
}

匿名函数的内存表现

QQ截图20230417114047.png

图解

  1. 代码区存放了三个函数的代码,对应有一个地址

  2. 定义变量fn,将匿名函数的地址传给了fn

  3. 调用函数test开辟存储空间

  4. 为num,value,method,res开辟存储空间,其中method保存传给它的函数的地址

  5. 执行函数,method保存了匿名函数的地址,执行method的时候开辟了存储空间,存放了a和b的值,函数结束后将值返回给res,并释放了method的存储空间

  6. 打印了res,test的函数也被释放,fn使用完毕也被释放

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

4

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

7

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

7

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

42

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

4

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

3

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

3

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Rust 教程
Rust 教程

共28课时 | 4万人学习

Kotlin 教程
Kotlin 教程

共23课时 | 2.1万人学习

Go 教程
Go 教程

共32课时 | 3.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号