当前位置: 首页 > news >正文

Golang 开发实战day07 - Functions

Golang 教程07 - Functions

1. Functions

1.1 什么是函数?

在 Golang 中,函数就像是代码的超级组合体,可以将一段代码封装成一个独立的单元,以便重复使用。

1.2 函数声明

func funcName(parameter1 type1, parameter2 type2) returnType {// 函数体
}
  • func: 关键字,表示这是一个函数声明。
  • funcName: 函数名,由字母、数字、下划线组成,不能以数字开头。
  • parameter1 type1: 函数参数,可以有多个,每个参数都有类型。
  • returnType: 函数返回值,可以没有,如果有,则必须指定类型。
  • // 函数体: 函数的代码块,包含具体的逻辑。

1.3 示例

Example 1: 电话问候方法调用

func sayGreeting (n string) {fmt.Printf("Good morning %v \n", n)
}
func sayBye(n string) {fmt.Printf("Goodbye %v \n", n)
}func main() {ayGreeting("小叮当")sayGreeting("静香")sayBye("小叮当")
}

Output:

Good morning 小叮当 
Good morning 静香 
Goodbye 小叮当 

Eample 2:多人之间问候

func sayGreeting (n string) {fmt.Printf("Good morning %v \n", n)
}
func sayBye(n string) {fmt.Printf("Goodbye %v \n", n)
}func cycleNames(n []string, f func(string)){for _, v := range n {f(v)}
}
func main() {cycleNames([]string{"大雄", "小夫", "胖虎"}, sayGreeting)cycleNames([]string{"大雄", "小夫", "胖虎"}, sayBye)
}

Output:

Good morning 大雄 
Good morning 小夫 
Good morning 胖虎 
Goodbye 大雄 
Goodbye 小夫 
Goodbye 胖虎 

Eample3:求圆面积

为了引用math.Pi方法,我们要import进入math的package
import ("fmt""math"
)
func circleArea(r float64) float64 {return math.Pi * r * r
}
func main() {a1 := circleArea(10.5)a2 := circleArea(15)fmt.Println(a1, a2)fmt.Printf("circle 1 is %0.3f and circle 2 is %0.3f", a1, a2)
}

Output:

346.36059005827474 706.8583470577034
circle 1 is 346.361 and circle 2 is 706.858

总结

函数是 Golang 中重要的编程概念,可以帮助你将代码组织成更小的单元,提高代码的复用性和可维护性。当然,函数在你成为golang编写代码后也必是生产工作中不可或缺的一部分。

在这里插入图片描述

相关文章:

  • 关于在PyCharm中使用虚拟环境
  • 04 - 7 段 16 进制数码管显示
  • DIY蓝牙键盘(1) - 理解 键盘报文(免费)
  • JAX深度学习库入门
  • JS实现双向数据绑定的三种方式
  • 面试题:RabbitMQ 消息队列中间件
  • 基于ssm的轻型卡车零部件销售平台(java项目+文档+源码)
  • 站群服务器如何提高搜索引擎排名
  • Linux中部署Java jar 包 shell 脚本
  • Excel中文显示问号
  • 多媒体编解码
  • Axure案例分享—垂直手风琴(附下载地址)
  • 如何使用 Python 本地客户端操作读写云服务器 Redis 缓存数据库详细教程(更新中)
  • Ubuntu20.04使用Neo4j导入CSV数据可视化知识图谱
  • 【C语言】预处理详解
  • 〔开发系列〕一次关于小程序开发的深度总结
  • gops —— Go 程序诊断分析工具
  • js
  • Mybatis初体验
  • niucms就是以城市为分割单位,在上面 小区/乡村/同城论坛+58+团购
  • SQL 难点解决:记录的引用
  • Vue ES6 Jade Scss Webpack Gulp
  • vue脚手架vue-cli
  • 阿里云购买磁盘后挂载
  • 那些被忽略的 JavaScript 数组方法细节
  • 入门级的git使用指北
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • JavaScript 新语法详解:Class 的私有属性与私有方法 ...
  • k8s使用glusterfs实现动态持久化存储
  • linux 淘宝开源监控工具tsar
  • Nginx惊现漏洞 百万网站面临“拖库”风险
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​猴子吃桃问题:每天都吃了前一天剩下的一半多一个。
  • ​人工智能书单(数学基础篇)
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (转)nsfocus-绿盟科技笔试题目
  • .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
  • .NET/C# 使用反射注册事件
  • .Net7 环境安装配置
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .NET开发不可不知、不可不用的辅助类(三)(报表导出---终结版)
  • @angular/cli项目构建--http(2)
  • [ 渗透工具篇 ] 一篇文章让你掌握神奇的shuize -- 信息收集自动化工具
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [BZOJ1008][HNOI2008]越狱
  • [C#]无法获取源 https://api.nuge t.org/v3-index存储签名信息解决方法
  • [c]统计数字
  • [C++] new和delete
  • [Java][Android][Process] 暴力的服务能够解决一切,暴力的方式运行命令行语句
  • [JS设计模式]Prototype Pattern
  • [LOJ#6259]「CodePlus 2017 12 月赛」白金元首与独舞
  • [LWC] Components Communication
  • [MYSQL数据库]- 索引
  • [nginx] 网上最全面nginx教程(近100篇文章整理)