Go 语言函数
链客,专为开发者而生,有问必答!
此文章来自区块链技术社区,未经允许拒绝转载。
函数是基本的代码块,用于执行一个任务。
Go 语言最少有个 main() 函数。
你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。
函数声明告诉了编译器函数的名称,返回类型,和参数。
Go 语言标准库提供了多种可动用的内置的函数。例如,len() 函数可以接受不同类型参数并返回该类型的长度。如果我们传入的是字符串则返回字符串的长度,如果传入的是数字,则返回数组中包含的函数个数。
函数定义
Go 语言函数定义格式如下:
func function_name( [parameter list] ) [return_types] {
函数体}
函数定义解析:
func:函数由 func 开始声明
function_name:函数名称,函数名和参数列表一起构成了函数签名。
parameter list]:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
return_types:返回类型,函数返回一列值。return_types 是该列值的数据类型。有些功能不需要返回值,这种情况下 return_types 不是必须的。
函数体:函数定义的代码集合。
实例
以下实例为 max() 函数的代码,该函数传入两个整型参数 num1 和 num2,并返回这两个参数的最大值:
/* 函数返回两个数的最大值 /func max(num1, num2 int) int {
/ 声明局部变量 */
var result int
if (num1 > num2) {
result = num1 } else {
result = num2 }
return result
}
函数调用
当创建函数时,你定义了函数需要做什么,通过调用改函数来执行指定任务。
调用函数,向函数传递参数,并返回值,例如:
package mainimport "fmt"func main() {
/* 定义局部变量 */
var a int = 100
var b int = 200
var ret int
/* 调用函数并返回最大值 */
ret = max(a, b)
fmt.Printf( “最大值是 : %d\n”, ret )}/* 函数返回两个数的最大值 /func max(num1, num2 int) int {
/ 定义局部变量 */
var result int
if (num1 > num2) {
result = num1 } else {
result = num2 }
return result
}
以上实例在 main() 函数中调用 max()函数,执行结果为:
最大值是 : 200
函数返回多个值
Go 函数可以返回多个值,例如:
package mainimport "fmt"func swap(x, y string) (string, string) {
return y, x}func main() {
a, b := swap(“Mahesh”, “Kumar”)
fmt.Println(a, b)}
以上实例执行结果为:
Kumar Mahesh
函数参数
函数如果使用参数,该变量可称为函数的形参。
形参就像定义在函数体内的局部变量。
调用函数,可以通过两种方式来传递参数:
传递类型
描述
值传递
值传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。
引用传递
引用传递是指在调用函数时将实际参数的地址传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数。
默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。
函数用法
函数用法
描述
函数作为值
函数定义后可作为值来使用
闭包
闭包是匿名函数,可在动态编程中使用
方法
方法就是一个包含了接受者的函数
相关文章:

终端主题_再见 XShell 和 ITerm 2,是时候拥抱全平台高颜值终端工具 Hyper 了!
点击上方“涛哥聊Python”,选择“星标”公众号重磅干货,第一时间送达转自:运维之美不论是 macOS 还是 Windows 下,我们都不推荐使用系统自带终端。无论是可拓展性还是可编程性都被「系统自带」这样的特点限制。特别是 Windows 下的…

每天一个linux命令(8):cp 命令
cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一。一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数。但是如果是在shell脚本…

samba srver on centos-7
切换到root用户安装samba,将windows登录用户admin映射到linux用户centos 安装samba并准备工作目录 yum install -y samba samba-client mkdir -p /var/samba/code chown -R centos:centos /var/samba/codetouch /etc/samba/smbusersecho "centos admin "…

以太坊数据结构MPT
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 MPT(Merkle Patricia Tries)是以太坊存储数据的核心数据结构,它是由Merkle Tree和Patricia Tree结合的一种树形结构,理解MP…

lambda在python中的用法_在python中对lambda使用.assign()方法
我在Python中运行以下代码:#Declaring these now for later use in the plotsTOP_CAP_TITLE Top 10 market capitalizationTOP_CAP_YLABEL % of total cap# Selecting the first 10 rows and setting the indexcap10 cap.loc[:10, :].set_index(id)# Calculating…

react 开发过程中的总结/归纳
1、点击元素,获取绑定该事件的父级元素,使用 e.currentTarget。e.target 获取的是,出发该事件的元素,该元素有可能是所绑定事件的元素的子元素。 2、使用 react router4 history 只能传递给儿子组件,不能传递给孙子组件…

kvm虚拟机--存储池配置梳理(转)
1.创建基于文件夹的存储池(目录) 2.定义存储池与其目录 1 # virsh pool-define-as vmdisk --type dir --target /data/vmfs 3.创建已定义的存储池 (1)创建已定义的存储池 1 # virsh pool-build vmdisk (2)查看已定义的存储池,存储池不激活无法…

区块链概况:什么是区块链
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术自身仍然在飞速发展中,目前还缺乏统一的规范和标准。 wikipedia 给出的定义为: A blockchain —originally, b…

drx功能开启后_简单实用!小米手机中这些新功能真香
小米手机作为国产机热销品牌之一,它除了有好看的外观,还有很多隐藏的实用功能,今天小编就来和大家分享5个小米手机里你不知道的功能。Al电话助理看到陌生号码时,很多人第一反应就是挂掉,不想接听,但又担心自…

Ubuntu 8.04嵌入式交叉编译环境arm-linux-gcc搭建过程图解
Linux版本:Ubuntu8.04 内核版本:Linux 2.6.24 交叉编译器版本:arm-linux-gcc-3.4.1 交叉编译器下载链接: https://share.weiyun.com/5oxlS6X (密码:36R7) 前言 1、搭建交叉编译环境 安装、配置交…

Installshield 2015 实现检测某安装文件是否存在并运行安装
最近在用installshiled 2015做安装包,用了很长时间研究明白了怎样实现在安装成功界面显示一个checkbox,选中该checkbox,就会安装选中的安装包。 首先我们要有一个installshield的工程。 其次是判断是否要显示这个checkbox。我的需求是根据某个…

区块链概况:从数字货币说起
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 从数字货币说起 货币是人类文明发展过程中的一大发明,最重要的职能包括价值尺度、流通手段、贮藏手段。很难想象离开了货币,…

Android RecyclerView 基本使用
Android RecyclerView 基本使用 概述 RecyclerView出现已经有一段时间了,相信大家肯定不陌生了,大家可以通过导入support-v7对其进行使用。 据官方的介绍,该控件用于在有限的窗口中展示大量数据集,其实这样功能的控件我们并不陌生…

lisp语言cond和if套用_在'if'语句中设置多行条件的样式?
Harley Holco..679您不需要在第二个条件行上使用4个空格.也许用:if (cond1 val1 and cond2 val2 andcond3 val3 and cond4 val4):do_something另外,不要忘记空格比您想象的更灵活:if (cond1 val1 and cond2 val2 andcond3 val3 and cond4 val4):do_somethingif (cond1 …

jvm七种垃圾收集器
JVM_七种垃圾收集器介绍 本文中的垃圾收集器研究背景为:HotSpotJDK7一、垃圾收集器概述如上图所示,垃圾回收算法一共有7个,3个属于年轻代、三个属于年老代,G1属于横跨年轻代和年老代的算法。JVM会从年轻代和年老代各选出一个算法进…

新手怎么学以太坊区块链开发?
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 在学习以太坊应用开发时,除了学习solidity开发智能合约,一个小白还应该补充 哪些知识?文本将给出相关的学习资源…

【题解】 bzoj1260: [CQOI2007]涂色paint (区间dp)
bzoj1260,懒得复制,戳我戳我 Solution: 这种题目我不会做qwq,太菜了区间打牌(dp) 用f[l][r]表示从l到r最少需要染几次色。状态转移方程: 1.\(f[l][r]min(f[l][i],f[i1][r]) (l<i<r)\) 这段染色等于俩段分别染色,…

[deviceone开发]-组件功能演示示例
一、简介 这个是官方比较早期对组件功能的展示集合,因为发布的比较早,只包含了部分组件,但是常用的组件和常用的功能都包含了。初学者推荐。二、效果图 三、相关下载 https://github.com/do-project/code4do/tree/master/demo四、相关讨论 ht…

联想g510升级换什么cpu好_老兵不死,十年前的联想 Y450 笔记本复活记
如果你是一个接触笔记本电脑比较早的用户,那么联想小Y的大名你一定不会陌生,作为联想旗下较为成功的产品线,彪悍的小Y在几年前就打出了名堂,而小Y系列笔记本里面又以 Y450 最为经典,Y450 引入 NVIDIA GT240M 中端移动显…

区块链和数据库
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术是一种不依赖第三方、通过自身分散式节点进行网路数据的存储、验证、传递和交流的一种技术方案。因此,有人从金融会计的角度…

普通粒子群算法和优化方法
粒子群优化(PSO, particle swarm optimization) 是由Kennedy和Eberhart在1995年提出的一 种群智能优化方法。 优点:好理解容易实现,适合解决极值问题 缺点:容易过早收敛,容易陷入局部最优解,(如果初始点选的…

古人怎么称呼年龄
来自为知笔记(Wiz)转载于:https://www.cnblogs.com/sanyuanempire/p/6154780.html

vue变量传值_vue组件与组件之间传值
目录一、父组件向子组件传值二、子组件向父组件传值三、兄弟组件之间的传值如上图所示,2是1的子组件,1是3的父组件,2和3是兄弟组件一、父组件向子组件传值:html代码:<div id"app"><v-app><!-- 用:xxxx&q…

区块链技术背后的运行逻辑
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 区块链技术可能是自互联网技术以来最伟大的发明。区块链可以在不需要有中央权威机构的情况下或不需要双方信任的情况下交换价值或财富。想像一下你…

scp遇到路径中有空格
sudo scp root1.1.1.1:/test/soft/123/Microsoft SQL Server 2000.iso . 错误! sudo scp root1.1.1.1:"/test/soft/123/Microsoft SQL Server 2000.iso" . 错误! sudo scp root1.1.1.1:/test/soft/123/Microsoft\ SQL\ Server\ 2000.…

bzoj 3262 陌上花开
本质是一个三维偏序,一位排序后cdq分治,一维在子函数里排序,一维用树状数组维护。 把三维相等的合并到一个里面。 1 #include<iostream>2 #include<cstdio>3 #include<algorithm>4 #include<cstring>5 #define N 100…

jspstudy启动mysql失败_MySql启动数据库设置初始密码
这一小节介绍在Mac OS、Linux、Windows上启动关闭重启MySQL服务,以及部分图形化界面对服务的操控。安装完成后,可以使用 service 命令启动 mysql 服务,在Mac上service命令不存在。命令行启动关闭重启MySQL服务在命令行终端启动 MySQL 非常方便…

区块链技术产生数字货币时代
链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 比特币是一种革命性的数字货币,更是一种颠覆性的创新技术。比特币最大的贡献是创造了信用,解决了困扰互联网进一步发展的拜…

软件构造 第二章 第一节 软件生命周期和版本控制
软件构造第二章 第一节 软件生命周期和版本控制 基本内容 Software Development Lifecycle (SDLC) Traditional software process models (waterfall, incremental, V- model, prototyping, spiral) Agile development and eXtreme Programming (XP) Collaborative software de…

三极管在ad中的原理图库_555时基电路内部结构及其工作原理
555时基电路特点时基电路是一种常用的模数混合型集成电路。由它组成的振荡器、单稳态触发器、双稳态触发器和各类电子开关等都被十分广泛地应用在各类电路之中。它具有定时精度高、响应速度快、温漂小、输出驱动电流大、结构简单等优点。555时基电路型号命名555时基芯片由其内部…