专栏首页aoho求索夯实基础:Go 语言函数声明和参数传递

夯实基础:Go 语言函数声明和参数传递

持续更新 Go 语言入门文章,本文简短精悍,帮助各位同学快速入门 Go 语言函数声明和参数传递。

前文回顾

前面的文章主要介绍了 Go 语言中提供的常用容器,包括数组、切片,列表和字典等,还介绍了这些容器的遍历方法。本文开始将会介绍 Go 语言中相关的函数和接口。

函数是一段封装好、可重复使用、针对单一功能的代码片段,它有利于程序的模块化和提高代码的可重用性。接口中定义了一系列将要被实现的方法,它代表了调用方和实现方共同遵守的协议,调用方通过接口了解可使用的方法而无需了解具体实现,实现方通过接口对外提供能使用的特性。

函数声明和参数传递

函数首先要进行声明,Golang 中函数声明包括函数名、参数列表、返回参数列表,具体样式如下所示:

func name(params)(return params){
 function body
}

Golang 中函数以 func 标识,我们在之前的例子中声明的 main 函数也是其中一种。函数名可以由字母、数字和下划线组成,但是函数名第一位不能是数字,在同一个包内,函数名不可重名。一个函数如果希望被包外代码访问,函数名的首字母需要为大写。

参数列表中的每个参数由参数变量名和参数类型组成,它们将作为函数的局部变量被使用。在参数列表中,多个参数之间通过逗号分隔。如果相邻的参数的类型是相同的,则可以省略类型,如下例子所示:

func cal(a, b int) int {
 return a + b;
}

在上面例子中,参数 ab 都是 int 类型,因此可以省略 a 的类型说明。

Golang 中函数不仅支持多返回值,还支持对返回值进行命名,此时返回参数列表与参数列表类似,如下例子所示:

func div(dividend, divisor int)(quotient, remainder int) {
 quotient = dividend/divisor
 remainder = dividend%divisor
 return
}

在上面正整数除法的函数中,我们对返回值分别命名为 quotientremainder ,于是我们可以直接在函数体内对他们进行赋值。需要注意的是,在使用命名返回值的函数中,在函数结束前我们需要显式使用 return 语句进行返回。命名返回值和非命名返回值不能混合使用,两种形式只能二选一,否则会出现编译错误。

小结

本文主要介绍了函数声明和参数传递。函数是基本的代码块,用于执行一个任务。Go 程序最少有个 main() 函数。通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。函数声明告诉了编译器函数的名称,返回类型,和参数。

Golang 中函数参数的传递方式都是值传递,在实际开发中为了减少拷贝时产生的性能损耗,我们可以在参数中使用指针或者引用(切片)来减少内存复制的操作。

本文分享自微信公众号 - aoho求索(aohoBlog),作者:aoho

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2021-08-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • go语言:函数参数传递详解

    参数传递是指在程序的传递过程中,实际参数就会将参数值传递给相应的形式参数,然后在函数中实现对数据处理和返回的过程。比较常见的参数传递有:值传递,按地址传递参数或...

    李海彬
  • 夯实基础:Go 语言匿名函数和闭包的应用实践

    前面的文章主要介绍了 Go 语言中函数声明和参数传递。本文将会继续介绍匿名函数和闭包相关的概念以及使用方法。

    aoho求索
  • Go 语言基础入门教程 —— 函数篇:函数的传参和返回值

    上篇教程我们介绍了 Go 语言中函数的基本定义和调用,其中也涉及到了函数的传参和返回值,只不过那里演示的是最简单的场景,今天我们就更复杂的传参和返回值进行介绍。

    学院君
  • Go语言函数、方法及变量作用域

    Go语言中没有类这个概念,因此函数就成了它最基本的组织单位。Go语言中函数的基本概念同其他编程语言。

    Steve Wang
  • 我的Go语言初体验

    只要了解这些底层的根本问题,你才会有持续的动力深入学习,而不是盲目跟风和三分钟热度。

    phoenix.xiao
  • Go 语言基础入门教程 —— 函数篇:变长参数

    所谓变长参数指的是函数参数的数量不确定,可以按照需要传递任意数量的参数到指定函数,比如 fmt.Printf 函数的参数列表显然就是个变长参数。

    学院君
  • go 学习笔记之数组还是切片都没什么不一样

    上篇文章中详细介绍了 Go 的基础语言,指出了 Go 和其他主流的编程语言的差异性,比较侧重于语法细节,相信只要稍加记忆就能轻松从已有的编程语言切换到 Go 语...

    雪之梦技术驿站
  • go 学习笔记之数组还是切片都没什么不一样

    上篇文章中详细介绍了 Go 的基础语言,指出了 Go 和其他主流的编程语言的差异性,比较侧重于语法细节,相信只要稍加记忆就能轻松从已有的编程语言切换到 Go 语...

    雪之梦技术驿站
  • go基础入门

    作为有编程基础的人入门基础语法是很容易的但是这次的go真的是有些别扭啊,前后折腾了有半月有余问题关键是有几个地方与已有的语言不同,比如goroutine str...

    大话swift
  • Go语言入门——基础语法篇(二)

    Go的语句是可以省略;结束符的,且每行尽可能只写一句代码,这是Go语言的编程范式,因此应遵循规范,不要加分号。分号只在一种情况下是必须的,当一行写了多个代码语句...

    arcticfox
  • 【从零开始学习Go语言】九.Go语言之变量常量及指针总结

    所谓指针其实你可以把它想像成一个箭头,这个箭头指向(存储)一个变量的地址 因为这个箭头本身也需要变量来存储,所以也叫做指针变量。

    一只特立独行的兔先生
  • go 学习笔记之值得特别关注的基础语法有哪些

    在上篇文章中,我们动手亲自编写了第一个 Go 语言版本的 Hello World,并且认识了 Go 语言中有意思的变量和不安分的常量.

    雪之梦技术驿站
  • Go 语言基础入门教程 —— 函数篇:递归函数与性能优化

    很对编程语言都支持递归函数,所谓递归函数指的是在函数内部调用函数自身的函数,从数学解题思路来说,递归就是把一个大问题拆分成多个小问题,再各个击破,在实际开发过程...

    学院君
  • Go学习之基础进阶 - 理解篇(三)

    在《基础篇》和《入门篇》当中,我们已经知道了Golang的基本属性、方法等知识,接下来,在本文当中就详细介绍一下Go中的一些常用操作和语法函数,包含下面几个内容...

    23号杂货铺
  • Go语言实战笔记(八)| Go 函数方法

    在Go语言中,函数和方法不太一样,有明确的概念区分。其他语言中,比如Java,一般来说,函数就是方法,方法就是函数,但是在Go语言中,函数是指不属于任何结构体、...

    飞雪无情
  • Go基础系列 | 10. 函数

    函数也可以没有返回值,这个时候就无需 return 关键字,例如: main() 入口函数、 init() 初始化函数。

    潇洒哥和黑大帅
  • 【Go 语言社区】Go 语言函数--转

    Go 语言函数 函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务...

    李海彬
  • Go语言入门系列(六)之再探函数

    在Go语言入门系列(二)之基础语法总结这篇文章中已经介绍过了Go语言的函数的基本使用,包括声明、参数、返回值。本文再详细介绍一下函数的其他使用。

    二十二画程序员
  • Go 语言函数

    函数是基本的代码块,用于执行一个任务。 Go 语言最少有个 main() 函数。 你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。 函数声明告诉...

    李海彬

扫码关注云+社区

领取腾讯云代金券