Golang 开发实战day13 - Reciver Functions

🏆个人专栏
🤺 leetcode
🧗 Leetcode Prime
🏇 Golang20天教程
🚴‍♂️ Java问题收集园地
🌴 成长感悟
欢迎大家观看,不执着于追求顶峰,只享受探索过程

Golang 开发实战day13 - 接收者函数

  Golang 接收者函数是方法的另一种打开方式
  在 Golang 中,方法是与结构体或接口相关联的一组函数。通常情况下,我们使用 func (receiver TypeName) methodName(parameters) 格式来定义方法,其中 receiver 是方法接收者,用于指定方法作用于哪种类型的数据。

  接收者函数为我们提供了一种更灵活的定义方法的方式。它允许我们直接将方法定义在结构体或接口类型上,而无需使用 func 关键字。这使得代码更加简洁易读,也更加符合面向对象的编程理念。

1. 接收者函数的语法:

func (receiver TypeName) methodName(parameters) {// 方法体
}

其中:

  • receiver 是方法接收者,用于指定方法作用于哪种类型的数据。
  • TypeName 是接收者类型的名称。
  • methodName 是方法名称。
  • parameters 是方法参数列表。
  • 方法体 是方法的具体实现代码。

2. 接收者函数的优点

  • 简洁易读: 接收者函数可以直接定义在结构体或接口类型上,代码更加简洁易读。
  • 符合面向对象的编程理念: 接收者函数更加符合面向对象的编程理念,方法直接与数据类型关联,提高了代码的可维护性。
  • 方法链式调用: 接收者函数支持方法链式调用,使代码更加优雅。

3. 示例

  项目中创建两个go文件,main.go, bill.go

3.1 main.go

func main() {mybill := newBill("哆啦A梦的账单")fmt.Println(mybill.format())
}

3.2 bill.go

// 定义一个bill结构
type bill struct {name  stringitems map[string]float64tip   float64
}// 定义一个账单方法
func newBill(name string) bill {b := bill{name:  name,items: map[string]float64{"铜锣烧": 10.99, "提拉米苏": 30.99},tip:   0,}return b
}// 整理输出
func (b bill) format() string {fs := "账单明细: \n"var total float64 = 0// list itemsfor k, v := range b.items {fs += fmt.Sprintf("%v ...$%v \n", k+":", v)total += v}// totalfs += fmt.Sprintf("%v ...$%0.2f", "总金额:", total)return fs
}

3.3 输出

  这回的输出有些不一样,直接在命令行中运行
在这里插入图片描述

4. 总结:

  接收者函数是 Golang 中一种强大的工具,可以让我们更灵活地定义方法,提高代码的简洁性和可维护性。理解和掌握接收者函数的使用技巧,可以帮助你写出更加优雅、高效的 Golang 代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/9028.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2万字长文:海豚调度器(DolphinScheduler)面试题深入了解

目录 海豚调度器的主要功能和特点 海豚调度器与Oozie、Azkaban等调度器相比的优势

第42天:WEB攻防-PHP应用MYSQL架构SQL注入跨库查询文件读写权限操作

第四十二天 一、PHP-MYSQL-SQL注入-常规查询 1.PHP-MYSQL-Web组成架构 MySQL(统一管理) ​ root(自带默认) ​ 网站A testA ​ 网站B testB MySQL(一对一管理) ​ testA用户 ​ 网站A testA ​ testB用户 ​ 网站B testB access无数据库用户 m…

三勾软件 / 三勾点餐系统门店系统,java+springboot+vue3

项目介绍 三勾点餐系统基于javaspringbootelement-plusuniapp打造的面向开发的小程序商城,方便二次开发或直接使用,可发布到多端,包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。 在…

LVS 负载均衡部署 NAT模式

一、环境准备 配置环境: 负载调度器:配置双网卡 内网:172.168.1.11(ens33) 外网卡:12.0.0.1(ens37)二台WEB服务器集群池:172.168.1.12、172.168.1.13 一台NFS共享服务器:172.168.1.14客户端&#xff…

Android的NDK开发中Cmake报缺少对应的x86的so文件

需要实现一个串口操作的命令。 供应商提供了2个so文件。 分别是 armeabi-v7a 和 arm64-v8a 添加到对应的cpp下。 在CMakeLists.txt里添加so文件 # 添加预编译的库 add_library(libxxx SHARED IMPORTED)# 设置库的路径 set_target_properties(libxxx PROPERTIES IMPORTED_…

springboot和html学院教务管理系统

端口号根据你实际运行程序的端口号来 访问地址:localhost:8080 学生 : student1 123456 管理员:admin 123456 老师:2020001 123456 sys_user 表是账号和密码

Android 11 新增设备支持语言

Android 系统默认支持多个国家语言。实现对整个android系统的语言设置,我们可以通过系统提供的 LocalePicker 里的方法来实现。 一、APP实现 1、权限设置 首先需要系统级的权限,在 AndroidManifest.xml 里申请权限: android:sharedUserId=“android.uid.system” <!--…

am62x edp屏调试

文章目录 am62x edp屏调试问题现象问题分析问题测试1 dtbo文件问题?2 ko文件问题3 驱动问题?4 问题定位:问题总结:附录设备结点:启动打印:am62x edp屏调试 问题现象 使用5.10内核配置的edp屏可以正常显示,但更新成6.1的内核后,不仅edp不正常工作,hdmi也不能正常工作…

隔离流量优化网络传输

不要将长流和短突发流(或者大象流和老鼠流)混部在一起&#xff0c;我建议用切片或虚通道将它们在全链路范围彻底隔离&#xff0c;而不仅仅在交换机上配合着大肆宣讲的高端包分类算法配置一些排队调度。 也不必扯泊松到达&#xff0c;帕累托分布&#xff0c;这些概念在论文建模…

Cocos Creator UlLabel的使用详解

前言 Cocos Creator是一款由Cocos公司开发的跨平台游戏开发引擎&#xff0c;它集成了Cocos2d-x引擎和Cocos Studio编辑器&#xff0c;可以帮助开发者快速地创建2D和3D游戏。在Cocos Creator中&#xff0c;UI系统是非常重要的一部分&#xff0c;而在UI系统中&#xff0c;UILabe…

Flutter笔记:Widgets Easier组件库(13)- 使用底部弹窗

Flutter笔记 Widgets Easier组件库&#xff08;13&#xff09;使用底部弹窗 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of this …

使用HashMap实现,对一个字符集进行哈夫曼编码

最终达到的效果: 调用一个类 class HuffmanCodin{.....} 使用类中的静态方法&#xff0c;获取哈夫曼编码&#xff1a; 事前准备——哈夫曼树的节点定义 class Node implements Comparable<Node> {int weight;//权重Node left;Node right;char ch;//关键字&#xff0c…

单机轻松支持百万并发的go协程的简单tcpsocket服务端客户端通信小程序示例源码

单机轻松支持百万并发的go协程的简单tcpsocket服务端客户端通信小程序示例源码 服务端 server.go package mainimport ("bufio""fmt""io""net""os""strings""time" )// 简单的客户端服务端通信示例 /…

管理学SCI期刊,中科院4区,审稿快易录用,性价比超高!

一、期刊名称 Central European Journal of Operations Research 二、期刊简介概况 期刊类型&#xff1a;SCI 学科领域&#xff1a;管理学 影响因子&#xff1a;1.7 中科院分区&#xff1a;4区 出版方式&#xff1a;订阅模式/开放出版 版面费&#xff1a;选择开放出版需…

人大金仓报The connection attempt failed.Reason:Connection reset解决办法

在连接人大京仓数据库 的时候报下面的错误 解决办法&#xff1a; 更换这里的IP地址就行&#xff0c;不要用127.0.0.1&#xff0c;然后就可以了

24.c++异常(异常的抛出和捕获、异常的重新抛出、抛出异常对象、抛出派生类对象、异常规范)

1.C语言传统的处理错误的方式 传统的错误处理机制&#xff1a; 终止程序&#xff0c;如assert&#xff0c;缺陷&#xff1a;用户难以接受。如发生内存错误&#xff0c;除0错误时就会终止程序。返回错误码&#xff0c;缺陷&#xff1a;需要程序员自己去查找对应的错误。如系统…

qq空间:图片批量下载js脚本工具,javascript批量下载图片

qq空间&#xff1a;图片批量下载js脚本工具&#xff0c;javascript批量下载图片 QQ空间很多老照片想下载&#xff0c;但是腾讯没放开&#xff0c;只能一张张下载太麻烦。用前端js写了一个脚本支持批量下载。另外就是空间内的照片会被压缩&#xff0c;过几年再看&#xff0c;个…

vscode的git插件使用教程

虽然git的命令我没有滚瓜烂熟&#xff0c;但vscode的git插件是尊嘟很好用啊&#xff0c;都被我用烂了。在网上看见一个讲的很不错的插件教程。借鉴一下。并在一些地方用块引用进行了补充说明&#xff01; 跳过了vscode安装过程。 克隆GitHub中的存储库&#xff1a; 1、复制Gi…

Redmine 的主题 bs-redmine-theme-dark 完善

Redmine 的主题 bs-redmine-theme-dark 感觉还不错, 但是有部分样式看起来不是很舒服, 以下是一些调整: bs-redmine-theme-dark/stylesheets/application.css import url(../../../stylesheets/application.css); import url(style.css); import url(plugins.css); import url…

自然资源-重大建设项目前期的主要工作流程和重点关注事项

自然资源-重大建设项目前期的主要工作流程和重点关注事项 重大建设项目通常是指对国家、地区或组织具有重要战略意义&#xff0c;涉及大规模投资和长期发展的项目。这些项目往往对经济、社会和环境产生深远影响&#xff0c;通常涉及基础设施、科技、能源、交通、水利等领域。 …