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

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 代码。

相关文章:

Golang 开发实战day13 - Reciver Functions

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

ZL-016D多通道小鼠主动跑轮系统主要研究动物生活节律

简单介绍: 多通道小鼠主动跑轮系统是由动物本身自发运动来推动跑轮转动。在这种构型中,笼内动物长期活动的信息,如跑轮转动方向、转数、累计总行程等,能够使用编码器进行长度计记录。此装置由转轮组件、笼体、以及转动方向速度传…...

基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (九)

LlaMA 3 系列博客 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (一) 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (二) 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (三) 基于 LlaMA 3 + LangGraph 在windows本地部署大模型 (四) 基于 LlaMA…...

计算机类的英语

Algorithm(算法)Binary code(二进制代码)Byte(字节)Cache(缓存)Database(数据库)Encryption(加密)Firewall(防火墙&#x…...

深⼊理解指针(5)

目录 1. 回调函数是什么?1.1 使用回调函数修改 2. qsort使⽤举例2.1 使⽤qsort函数排序整型数2.2 使⽤qsort排序结构数据按年龄排序2.3 使⽤qsort排序结构数据按名字排序2.4整体代码 3. qsort函数的模拟实现3.1 整型数组的实现3.2 结构体按名字排序实现3.3 结构体按…...

baomidou dynamic-datasource 强制查询sql走主库

场景 因为引用了baomidou主从数据源&#xff0c;因为业务场景特殊&#xff0c;需要查询语句强制走主库&#xff0c;把解决方案分享出来&#xff0c;帮助大家少走弯路 pom依赖 <dependency><groupId>com.baomidou</groupId><artifactId>dynamic-data…...

FPGA ov5640视频以太网传输

1 实验任务 使用DFZU4EV MPSoC 开发板及双目OV5640摄像头其中一个摄像头实现图像采集&#xff0c;并通过开发板上的以太网接口发送给上位机实时显示。 2 Verilog代码 2.1 顶层模块 timescale 1ns / 1ps //以太网传输视频顶层模块module ov5640_udp_pc (input sys_cl…...

论Java和C++方向选择

目录 1.难度2.就业压力3.岗位选择4.薪资待遇5.选择建议小结 1.难度 Java &#xff0c;C&#xff0c; 测开&#xff0c;整体来说三个方向难度相当。 1.仅从语法角度来看&#xff0c;c 是掌控一切&#xff0c;知识都要懂一点&#xff0c;而java的特点在于省心&#xff0c;都封装…...

交通灯-设计说明书

设计摘要&#xff1a; 本设计基于单片机技术&#xff0c;旨在实现智能化交通信号控制&#xff0c;并具备夜间模式、禁止通行模式、同行模式切换以及车流量监测功能。通过按键S1和S2实现夜间模式和禁止通行模式的切换&#xff0c;确保夜间交通安全和禁止通行的需要。按键S3和S4…...

[前端] vue2的/deep/转化为vue3语法(笔记)

vue2语法示例 <style scoped lang"less">::v-deep .el-carousel__button {width: 8px;height: 3px;border-radius: 3px;}::v-deep .el-carousel__indicator.is-active button {width: 16px;} } </style>在 Vue 3 中&#xff0c;/deep/ 或 >>> …...

JavaScript基础(七)

isNaN //用来判断一个变量是不是一个非数字 不是来判断是不是number类型&#xff0c;而是判断当前值能不能转为number类型&#xff0c;OK&#xff1f;懂了。 还有同学不明白&#xff0c;来看实例: <script> //isNaN(非数字)→true &#xff08;数字&#xff09;→fal…...

【DevOps】Linux 内核网络子系统全面指南与性能调优

目录 一、Linux 内核网络子系统 1. Netfilter 主要特性 工作流程 2. Traffic Control (TC) 主要特性 工作流程 3. Socket 主要特性 工作流程 二、内核参数优化 1. net.ipv4.tcp_window_scaling 2. net.core.netdev_max_backlog 3. net.ipv4.tcp_rmem 和 net.ipv4…...

mybatis-plus-ui代码生成器

mybatis-plus-generator-ui 提供交互式的Web UI用于生成兼容mybatis-plus框架的相关功能代码&#xff0c;包括Entity,Mapper,Mapper.xml,Service,Controller等 &#xff0c;可以自定义模板以及各类输出参数&#xff0c;也可通过SQL查询语句直接生成代码。 使用方法 引入mave…...

项目进度总结

完成了签到&#xff0c;老师发布签到并设置持续的时间&#xff0c;学生在规定的时间内可用签到码进行签到&#xff0c;超过时间将不在允许签到...

CheckStyle静态样式之道

优质博文&#xff1a;IT-BLOG-CN 在标准化的统一样式检查规范里&#xff0c;最为常用的统一样式工具是checkstyle插件&#xff0c;而不是国内阿里的代码规约插件。 【1】下载插件 【2】配置生效 配置生效及告警设置 【3】配置checkstyle.xml 官网地址 官网最新Releases 下面…...

2024中国振威化工装备展

2024上海国际化工设备展览会 第十六届上海国际化工装备博览会将于2024年11月19-21日在国家会展中心&#xff08;上海&#xff09;举办&#xff0c;预计参展企业1000多家&#xff0c;展览面积7万平方米&#xff0c;观众突破10万人次。展会设置石化装备、化工单元设备、化工环保…...

Docker操作之启动多个相同容器实例并nginx负载均衡

文章目录 前言 一、一些概念 1.Docker 2.nginx 二、操作步骤 1.构建compose.yaml 2.nginx配置 3.Docker compose命令 4.问题与解决 总结 前言 Docker对于开发、运维人员来说都很熟悉&#xff0c;但是对于开发人员来说&#xff0c;多数时候只需一个容器实例运行即可。…...

本地的git仓库和远程仓库

文章目录 1. 远程创建仓库2. 关联远程和本地代码3. 推送本地分支到远程4. 删除远程分支5. 分支重命名6. git pull rebase7. git merge master把本地文件删除了 1. 远程创建仓库 2. 关联远程和本地代码 上面创建完后会得到一个git仓库的链接&#xff0c;有SSH或者http的 http:…...

Google I/O 2024 干货全解读:Gemini AI 横空出世,智能未来触手可及!

Google I/O 2024 干货全解读&#xff1a;Gemini AI 横空出世&#xff0c;智能未来触手可及&#xff01; 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; 《面试题大全》…...

深入理解JVM:介绍JVM的工作原理,包括类加载机制,内存模型,垃圾回收机制等

类加载机制&#xff1a; JVM的类加载机制主要包括加载、连接&#xff08;验证、准备和解析&#xff09;、初始化、使用和卸载五个阶段。第一个阶段是加载需求的.class文件到内存中。第二个阶段是完成对字节码的验证&#xff0c;为类变量分配内存并初始化为对应类型默认值。第三…...

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする

日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风&#xff0c;以**「云启出海&#xff0c;智联未来&#xff5c;打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办&#xff0c;现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

大型活动交通拥堵治理的视觉算法应用

大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动&#xff08;如演唱会、马拉松赛事、高考中考等&#xff09;期间&#xff0c;城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例&#xff0c;暖城商圈曾因观众集中离场导致周边…...

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

Python实现prophet 理论及参数优化

文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

USB Over IP专用硬件的5个特点

USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中&#xff0c;从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备&#xff08;如专用硬件设备&#xff09;&#xff0c;从而消除了直接物理连接的需要。USB over IP的…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...