golang - 函数的使用

2023-11-06

核心化编程

为什么需要函数?

  1. 代码冗余问题
  2. 不利于代码维护
  3. 函数可以解决这个问题

函数

函数:为完成某一功能的程序指令(语句)的集合,称为函数

在 Go 中,函数分为:自定义函数(自己写的)、系统函数(系统提供的)

函数的定义

基本语法:

func 函数名(形参列表) (返回值列表) {
    执行语句...
    return 返回值列表
}

  • 形参列表:表示函数的输入
  • 函数中的语句:表示为了实现某一功能代码块
  • 函数可以有返回值,也可以没有

包的引入:

  • 在实际开发中,我们往往需要在不同的文件中,去调用其他文件的定义的函数,比如在 main.go 中,去使用 utils.go 文件中的函数,如何实现?——》包
  • 现在有两个程序员共同开发一个 Go 项目,程序员A 希望定义函数 cal,程序员B 也想定义函数 cal,两个程序员吵起来了,怎么办?——》包

包的原理图

包的本质实际上就是创建不同的文件夹,来存放程序文件

 

 

 包的介绍

包的概念:

说明:go 的每一个文件都是属于一个包的,也就是说 go 是以包的形式来管理文件和项目目录结构的

包的三大作用:

  1. 区分相同名字的函数,变量等标识符
  2. 当程序文件很多时,可以很好的管理项目
  3. 控制函数、变量等访问范围,即作用域

包的相关说明:

  • 打包基本语法
    • package util
  • 引入包的基本语法
    • import "包的路径"

包的快速入门:

说明:包的快速入门——》Go 相互调用函数

使用包里面的函数

包名.函数名( )

包的注意事项和细节说明:

  1. 在给一个文件打包时,该包对应一个文件夹,比如这里的 utils 文件夹对应的包名就是 utils,文件的包名 通常 和文件所在的文件夹名一致,一般为小写字母
  2. 当引入一个文件要使用其它包函数或变量时,需先引入对应的包
    • 引入方式1:import "包名"
    • 引入方式2: import ( "包名")(和引入fmt 一样)
    • package 指令在文件第一行,然后是 import 指令
    • 在 import 包时,路径从 $GOPATH 的 src 下开始,不用带 src ,编译器会自动从 src 下开始引入
  3. 为了让其他包的文件,可以访问到本包的函数,则该函数名的首字母需要大写,类似其它语言的 public,这样才可以跨包访问。(比如 untils.go )
  4. 在访问其他包函数时,其语法是: 包名。函数名
  5. 如果包名较长,Go 语言支持给包取别名。注意细节:取别名后,原来的包名就不能使用了。说明:如果给包取了别名,则需要使用别名来访问该包的函数和变量
  6. 在同一个包下,不能有相同的函数名(也不能有相同的全局变量),否则报重复定义错误
  7. 如果你要编译成一个可执行程序文件,就需要将这个包声明为 main,即 package main。这个就是一个语法规范,包名可以自定义
    • 编译时需要编译 main 包所在的文件夹
    • 可以指定生产的可执行文件名 .exe,放在指定路径
      • go build -o bin\my.exe 后面时mian.go所在的路径
      • -o  代表输出
    • 当编译完会生成一个 pkg 文件,里面是库包 .a(里面是二进制)

函数的调用机制

 

 

 

 

 

 

  • 在调用一个函数时,会给该函数分配一个新的空间,编译器会通过自身的处理让这个新的空间和其他的栈的空间区分开来
  • 在每个函数对应的栈中,数据空间是独立的,不会混淆
  • 当一个函数调用完毕(执行完毕)后程序会销毁这个函数对应的栈空间。

return 语句

基本语法

Go 函数支持返回多个值,这一点是其他编程语言没有的

func 函数名(形参列表) (返回值列表) {
    语句...
    return 返回值列表
}
  1. 如果返回多个值时,在接收时,希望忽略某个返回值,则使用 _ 符号表示占位忽略
  2. 如果返回值只有一个,(返回值类型列表)可以不写 ()

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

golang - 函数的使用 的相关文章

  • 【计算机毕业设计】北工国际健身俱乐部

    本系统为会员而设计制作北工国际健身俱乐部 旨在实现北工国际健身俱乐部智能化 现代化管理 本北工国际健身俱乐部管理自动化系统的开发和研制的最终目的是将北工国际健身俱乐部的运作模式从手工记录数据转变为网络信息查询管理 从而为现代管理人员的使用提
  • 【计算机毕业设计】SpringBoot+Vue.js协同过滤算法美食推荐小程序 _7tr93

    伴随着我国社会的发展 人民生活质量日益提高 于是对各种需求进行规范而严格是十分有必要的 所以许许多多的微信小程序应运而生 此时单靠人力应对这些事务就显得有些力不从心了 所以本论文将设计一套协同过滤算法美食推荐小程序 帮助美食推荐进行美食分类
  • 【计算机毕业设计】springbootstone音乐播放器的设计与实现

    随着我国经济的高速发展与人们生活水平的日益提高 人们对生活质量的追求也多种多样 尤其在人们生活节奏不断加快的当下 人们更趋向于足不出户解决生活上的问题 stone音乐播放器展现了其蓬勃生命力和广阔的前景 与此同时 为解决用户需求 stone
  • 面试官随便问几个问题就知道你究竟做没做过微信支付宝支付

    面试官随便问几个问题就知道你究竟做没做过微信支付宝支付 你知道直连模式和服务商模式吗 网上的课程一般给你演示的都是直连模式 而企业中有不少是申请成为了服务商 因为里面有佣金提成 我粗俗地解释 直连模式 就是说你是一个会做生意的老板 自己会搞
  • 史上最全Java面试八股文(带全部答案)2024年最新版

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 计算机Java项目|springboot校园台球厅人员与设备管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|在线图书管理

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|学生成绩管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 2024史上最全Java面试八股文(带全部答案)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 面试官:分库分表后如何生成全局ID?

    分库分表后就不能使用自增 ID 来作为表的主键了 因为数据库自增 ID 只适用于单机环境 但如果是分布式环境 是将数据库进行分库 分表或数据库分片等操作时 那么数据库自增 ID 就会生成重复 ID 从而导致业务查询上的问题 所以此时 可以使
  • JCMsuite应用:光学环形谐振腔模拟

    本案程演示了环形谐振腔的模拟 这种类型的集成光子器件 例如用作升 降滤波器或在传感应用中 当物质或粒子附着在环上时 通过测量其共振频率的位移来检测 对于集成光子电路中的无源光器件 s矩阵通常是研究的热点 它描述了通过端口 波导进入设备的电磁
  • 【固定翼飞行器】用于计算固定翼飞机空气动力学的紧凑涡旋格方法研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码实现
  • 【自适应滤波】一种接近最佳的自适应滤波器,用于突发系统变化研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码及文章
  • 【go语言】结构体数据填充生成md错误码文件

    这里使用pongo2这个模版引擎库进行md文件渲染 GitHub flosch pongo2 Django syntax like template engine for Go package main import fmt github
  • 2024年华为OD机试真题-靠谱的车-Python-OD统一考试(C卷)

    题目描述 程序员小明打了一辆出租车去上班 出于职业敏感 他注意到这辆出租车的计费表有点问题 总是偏大 出租车司机解释说他不喜欢数字4 所以改装了计费表 任何数字位置遇到数字4就直接跳过 其余功能都正常 比如 1 23再多一块钱就变为25 2
  • 2024年华为OD机试真题-查找接口成功率最优时间段-Python-OD统一考试(C卷)

    题目描述 服务之间交换的接口成功率作为服务调用关键质量特性 某个时间段内的接口失败率使用一个数组表示 数组中每个元素都是单位时间内失败率数值 数组中的数值为0 100的整数 给定一个数值 minAverageLost 表示某个时间段内平均失
  • 2024最强Java面试八股文合集(持续更新)

    今天要谈的主题是关于求职 求职是在每个技术人员的生涯中都要经历多次 对于我们大部分人而言 在进入自己心仪的公司之前少不了准备工作 有一份全面细致 面试题 将帮助我们减少许多麻烦 在跳槽季来临之前 特地做这个系列的文章 一方面帮助自己巩固下基
  • 【安全】Java幂等性校验解决重复点击(6种实现方式)

    目录 一 简介 1 1 什么是幂等 1 2 为什么需要幂等性 1 3 接口超时 应该如何处理 1 4 幂等性对系统的影响 二 Restful API 接口的幂等性 三 实现方式 3 1 数据库层面 主键 唯一索引冲突 3 2 数据库层面 乐
  • 计算机Java项目|人体健康信息管理系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板
  • 计算机Java项目|java游戏账号交易系统

    作者简介 Java领域优质创作者 CSDN博客专家 CSDN内容合伙人 掘金特邀作者 阿里云博客专家 51CTO特邀作者 多年架构师设计经验 腾讯课堂常驻讲师 主要内容 Java项目 Python项目 前端项目 人工智能与大数据 简历模板

随机推荐

  • 遥感变化检测综述 Change Detection Based on Artificial Intelligence:State-of-the-Art and Change

    遥感变化检测综述 Change Detection Based on Artificial Intelligence State of the Art and Change 现存的变化检测综述主要专注于在多时态高光谱图像 HSIs 和高空间
  • 终极秘密---------windows里藏着9.11的惊天大密码

    终极秘密 windows里藏着9 11的惊天大密码 神秘连锁 密码 泄漏恐怖分子袭美玄机 方法 用WORD 编辑文档输入Q33NY 必须大写 这是9 11撞击世界贸易中心的沙特勇士们乘坐的航班号 第三 将字体大小改到72 最后 将字体转成
  • JS实现简单的购物车

    以下是一个基本的 JS 购物车实现 由于是实现基本的功能 就不弄得多复杂了 代码可以直接Ctrl c v 大家可以试一试 HTML div h2 产品列表 h2 ul li h3 商品1 h3 p 价格 10元 p li ul div
  • SVN 报错:does not support the HTTP/DAV protocol

    原因 我是直接粘贴了上面的网址 而正确做法应该是 点击checkout 复制这个里面的url
  • 图像色彩编码YUV(YCbCr)的基本知识

    参考地址 https www cnblogs com lifan3a articles 4930182 html YUV与YCbCr的定义 YCbCr是DVD 摄像机 数字电视等消费类视频产品中 常用的色彩编码方案 YCbCr 有时会称为
  • No Such Property: Scope For Class: Com.android.build.gradle.internal.variant.ApplicationVariantData

    No Such Property Scope For Class Com android build gradle internal variant ApplicationVariantData 集成360开源的Replugin出现了这个问
  • 软件测试-测试用例的经典例子

    一 等价类划分问 某程序规定 输入三个整数 a b c分别作为三边的边长构成三角形 通过程序判定所构成的三角形的类型 当此三角形为一般三角形 等腰三角形及等边三角形时 分别作计算 用等价类划分方法为该程序进行测试用例设计 三角形问题的复杂之
  • python os模块示例讲解

    os模块包含普遍的操作系统功能 提供了丰富的方法用来处理文件和目录以及一些系统相关的信息的获取 利用这个模块可以写出与平台无关的程序 比如就是使用os sep可以取代操作系统特定的路径分割符 本模块提供一种可移植的方式来使用依赖于操作系统的
  • Ubuntu上安装Boost C++以及Boost.Python的过程和经验

    由于实验的需要 想运行一下这个项目 https github com luckiezhou DynamicTriad 和所有科研相关类的repo一样 要真正用起来还得填很多坑 不得不说 这个repo的作者已经足够认真负责 但是要跑起来还是不
  • C++——const、指针和引用,深度理解

    const修饰符 const修饰符可以定义常量 相比define const修饰的常量的类型更为确定 而不是文本替换 在 C 中 const 也可以修饰对象 且一旦将对象定义为常对象之后 就只能调用类的 const 成员 包括 const
  • 感谢有你

    践行开源共创的精神 FISCO BCOS开源社区致力打造开放多元的开源联盟链生态 目前 社区已汇聚了超70000名社区用户 大家聚集于此碰撞观点 交流技术 围绕FISCO BCOS开发各类实用的应用组件 持续优化项目 并自发输出技术解析 使
  • 网络教育进入新里程碑?斯坦福大学教授创立的免费在线课程教育项目Coursera

    原文地址 http www 36kr com p 201273 html 近两年来 网络教育在国外可谓是非常的热门 无论是课程质量还是其模式都在不断走向成熟 由斯坦福大学两位教授创立的免费在线课程项目Coursera今天宣称 旗下有 5 门
  • request.getScheme() 使用方法

    今天在看代码时 发现程序使用了 request getScheme 不明白是什么意思 查了一下 结果整理如下 1 request getScheme 返回当前链接使用的协议 一般应用返回http SSL返回https 2 在程序中的应用如下
  • 电脑文件误删除恢复的解决办法

    有时候我们常常会头脑发热 把电脑中的一些重要文件不小心删除了 比如一些重要的图片或者文档 甚至还把回收站给清空了 怎么才能将误删除的文件找回来呢 可能大家会马上百度 会看到乱七八糟的找回误删除文件的方法 这些方法无非几种情况 1 软件下载下
  • 电脑ftp服务器信息,电脑上的ftp信息服务器地址

    电脑上的ftp信息服务器地址 内容精选 换一换 通常园区视频功能主要集中在存储和查看 视频分析和态势感知能力较弱 通过使用智能边缘平台与视频分析服务 提升视频分析和感知能力 实现智慧园区人脸识别检测功能 本实践需要使用到视频分析服务的边缘人
  • EXCEL中TEXTJOIN 函数的使用*

    EXCEL中TEXTJOIN 函数的使用 函数说明 textjoin 文本合并函数 函数组成 textjoin 分隔符 忽略空白单元格 字符串1 字符串2 字符串253 示例 需要将需要将左边的表格样式转换成右边的样式 操作步骤 1 将A列
  • Tensorflow2.x模型搭建的几种代码形式

    相信很多新手小白在才开始初学时就想要搭建自己的深度学习模型 但在看到每个风格不同的算法时 又会把前向传播 反向传播 和模型的搭建过程混淆 我总结了一下几种基于Tensorflow2 x搭建模型的代码 1 学习过程中最常见的数据切片 载入并预
  • cpu温度过高 ubuntu_联想拯救者Y7000P温度过高?Fn+Q配合XTU做温度和功耗测试

    Y7000P温度过高 Fn Q配合XTU做温度和功耗测试 国庆节入手Y7000P 机子很稳定 但是打大型游戏温度动辄90 以上 经常撞到95 温度墙 为了降低游戏中的温度 做了以下测试 Y7000P的i5 9300H功耗墙60W 78W 温
  • ecology9 系统文件常用说明

    这里写目录标题 数据库文件 操作异构系统数据库 白名单文件 日志框架的使用 数据库文件 D WEAVER ecology WEB INF prop weaver properties 操作数据库 public static void mai
  • golang - 函数的使用

    核心化编程 为什么需要函数 代码冗余问题 不利于代码维护 函数可以解决这个问题 函数 函数 为完成某一功能的程序指令 语句 的集合 称为函数 在 Go 中 函数分为 自定义函数 自己写的 系统函数 系统提供的 函数的定义 基本语法 func