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

Go语言 类封装和绑定方法

本篇文章主要内容为Go语言类相关操作:封装和绑定方法介绍及示例。

目录

封装

绑定方法

类方法形参

指针形参

设置类方法参数

指针与非指针区别

总结


封装

go语言支持类的操作,但是没有class关键字,使用struct来模拟类。

示例如下:

type Person struct {// 成员属性name stringage intgender stringscore float64
}

绑定方法

在类外面绑定类的方法,并创建一个类对象并打印和调用类方法。

示例如下:

func (p Person) Eat() {fmt.Println("Person is eating")
}func main() {liyu := Person{name:   "liyu",age:    20,gender: "女",score:  88,}fmt.Println("liyu:", liyu)liyu.Eat()
}

类方法形参

指针形参

类方法的形参,可以是任意名称,也可以改为指针。

示例如下:

func (this Person) Eat() {fmt.Println("Person is eating")// 类的方法,可以使用自己的成员fmt.Println(this.name + " is eating")
}

设置类方法参数

设置类方法的参数,在调用时必须传递。

示例如下:

func (this *Person) Shop(num int) {fmt.Println(this.name + " is shoping")fmt.Println("shoping:", num)
}func main() {liyu := Person{name:   "liyu",age:    20,gender: "女",score:  88,}fmt.Println("liyu:", liyu)liyu.Eat()liyu.Shop(1)
}

指针与非指针区别

类方法的形参指针与非指针参数的区别,通过修改类属性name来展示。

指针参数可以修改值,非指针的不可修改值。

示例如下:

func (p Person) Eat() {// fmt.Println("Person is eating")// 类的方法,可以使用自己的成员// fmt.Println(p.name + " is eating")p.name = "new_" + p.name
}func (p *Person) Eat2() {p.name = "new_" + p.name
}func (this *Person) Shop(num int) {fmt.Println(this.name + " is shoping")fmt.Println("shoping:", num)
}func main() {liyu := Person{name:   "liyu",age:    20,gender: "女",score:  88,}liyu1 := liyufmt.Println("Eat,使用p Person,修改name的值 ...")fmt.Println("修改liyu:", liyu)liyu.Eat()fmt.Println("修改后liyu:", liyu)fmt.Println("Eat2,使用p *Person,修改name的值 ...")fmt.Println("修改liyu1:", liyu1)liyu1.Eat2()fmt.Println("修改后liyu1:", liyu1)
}

运行结果:

Eat,使用p Person,修改name的值 ...
修改liyu: {liyu 20 女 88}
修改后liyu: {liyu 20 女 88}
Eat2,使用p *Person,修改name的值 ...
修改liyu1: {liyu 20 女 88}
修改后liyu1: {new_liyu 20 女 88}

总结

本篇文章主要内容为Go语言类相关操作:封装和绑定方法介绍及示例。

相关文章:

Go语言 类封装和绑定方法

本篇文章主要内容为Go语言类相关操作:封装和绑定方法介绍及示例。 目录 封装 绑定方法 类方法形参 指针形参 设置类方法参数 指针与非指针区别 总结 封装 go语言支持类的操作,但是没有class关键字,使用struct来模拟类。 示例如下&am…...

DirectShow过滤器开发-写WAV音频文件过滤器

下载本过滤器DLL 本过滤器将PCM音频流,或ADPCM,IEEE_FLOAT,ALAW,MULAW,GSM610音频流写入WAV音频文件。 写WAV音频文件过滤器信息 过滤器名称:写WAV 过滤器GUID:{CF704A9C-0C67-4712-BA33-DD0A…...

php根据截止时间计算剩余的时间,并且在剩余时间不足1天时仅显示小时数

//获取政策库文章public function getIndexZckList(){$fl_id = input(fl_id);if(empty(...

Docker最佳实践进阶(一):Dockerfile介绍使用

大家好,上一个系列我们使用docker安装了一系列的基础服务,但在实际开发过程中这样一个个的安装以及繁杂命令不仅仅浪费时间,更是容易遗忘,下面我们进行Docker的进阶教程,帮助我们更快速的部署和演示项目。 一、什么是Dockerfile? Dockerfile 是一个文本文件,其中包含了…...

Anything in Any Scene:无缝融入任何场景,实现逼真视频对象插入技术

人工智能咨询培训老师叶梓 转载标明出处 现实世界的视频捕获虽然因其真实性而宝贵,但常常受限于长尾分布的问题,即常见场景过度呈现,而关键的罕见场景却鲜有记录。这导致了所谓的"分布外问题",在模拟复杂环境光线、几何…...

安卓开发中的AppCompat框架|安卓系统|安卓应用|兼容性|UI组件|核心组件|ActionBar|Fragment|最佳实践|框架|移动开发|移动应用

目录 1. 什么是AppCompat框架 1.1 AppCompat的起源 1.2 AppCompat的重要性 2. AppCompat框架的核心组件 2.1 AppCompatActivity 2.2 AppCompat主题 2.3 AppCompat Widgets 3. 在项目中使用AppCompat框架 3.1 添加依赖项 3.2 应用AppCompat主题 4. AppCompat的高级功…...

React使用useRef ts 报错

最近在写自己的React项目&#xff0c;我在使用useRef钩子函数的时候发现 TS2322: Type MutableRefObject<HTMLDivElement | undefined> is not assignable to type LegacyRef<HTMLDivElement> | undefined Type MutableRefObject<HTMLDivElement | undefined&g…...

python-信息交互-pyautogui

python-信息交互-pyautogui 一: pyautogui1> waht?2> 功能分类3> 概念及作用二: 通用功能1> function all2> function 注释三: 鼠标控制1> mouse functions2> mouse functions demo3> mouse drag demo四: keyboard控制1> keyboard functions2> …...

flink1.18 编译遇到的问题

1. flink-runtime-web编译失败 源码编译时一直卡在 [INFO] Running ‘npm ci --cache-max0 --no-save’ in 处理方法&#xff1a; 修改flink-runtime-web/pom.xml文件 将<arguments>ci --cache-max0 --no-save ${npm.proxy}</arguments> 替换为&#xff1a;<a…...

2024年8月份编译Openwrt系统基础

概述&#xff1a; 本文档记录openwrt系统的编译过程&#xff0c;以备后续再用&#xff0c;技术支持与指导&#xff01; 1.编译环境 环境需要Linux&#xff0c;我使用的环境是WSL2、Ubuntu 20.04 2.安装编译必须的依赖&#xff08;wsl、linux&#xff09; WSL2&#xff1a;Bu…...

Vue3+vite+ts 项目使用mockjs

1、安装mockjs npm i mockjs 2、安装vite-plugin-mock npm i vite-plugin-mock -D 3、安装axios npm i axios 4.在src目录下创建mock文件夹,在文件夹内创建login.ts等文件&#xff0c;并在文件夹内放置以下内容&#xff08;注&#xff1a;URL要和真实请求地址保持一致&am…...

动态规划(二)——例题

目录 Help Jimmy 题目 解题思路 神奇的口袋 题目 枚举的解法 递归的解法 动态规划的解法 滑雪 题目 解题思路 解法一 解法二 Help Jimmy 题目 "Help Jimmy" 是在下图所示的场景上完成的游戏&#xff1a; 场景中包括多个长度和高度各不相同的平台。地面是…...

Node.js中判断是文件还是文件夹的多种方法

在Node.js中&#xff0c;我们经常需要判断一个路径是文件还是文件夹。Node.js提供了多种方法来实现这一功能&#xff0c;本文将详细介绍这些方法&#xff0c;并给出相应的示例代码。 一、使用fs.Stats对象 在Node.js中&#xff0c;fs模块提供了fs.stat()或fs.statSync()方法&…...

idea 如何打war包

idea 如何打war包 1.在IntelliJ IDEA中打包WAR文件&#xff0c;你可以按照以下步骤操作:1.设置项目结构:首先&#xff0c;打开IDEA&#xff0c;选择File>Project Structure(或使用快捷键CtrlAltShiftS)。在打开的窗口中&#xff0c;选择 Artifacts 选项 2.添加Web Applicat…...

米联客-FPGA程序设计Verilog语法入门篇连载-15 Verilog语法_跨时钟域设计

软件版本&#xff1a;无 操作系统&#xff1a;WIN10 64bit 硬件平台&#xff1a;适用所有系列FPGA 板卡获取平台&#xff1a;https://milianke.tmall.com/ 登录“米联客”FPGA社区 http://www.uisrc.com 视频课程、答疑解惑&#xff01; 1概述 本小节主要讲解Verilog语法的…...

gradio 对话界面实现支持图片、视频正常显示

参考: https://www.gradio.app/docs/gradio/chatbot 问题: gradio网页输出视频nan;图片webp显示不出来 解决方法:需要通过gradio的Video、Image包装 代码: 这里下面启动个后端vlm模型(参考:https://blog.csdn.net/weixin_42357472/article/details/141126225),前端通…...

催收业务怎么提高接通率

提高催收呼叫业务的接通率是一个综合性的任务&#xff0c;需要从多个方面进行优化。以下是一些具体的策略和建议&#xff1a; 一、优化呼叫时间与频次 1. 选择合适的呼叫时间&#xff1a;通过分析目标客户的活跃时段&#xff0c;选择他们最可能接听电话的时间进行呼叫…...

动态生成sitemaps和robots.txt文件:提升SEO与网站可爬性

本文由 ChatMoney团队出品 在现代Web开发中&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;是网站成功的关键因素之一。搜索引擎通过网络爬虫来索引网页&#xff0c;而sitemaps和robots.txt文件则是帮助这些爬虫更好地理解和索引网站内容的重要工具。 sitemaps简介 Sit…...

LeetCode 第二十五天 2024.8.12

1. &#xff1a;递增子序列 题目链接: 491. 非递减子序列 - 力扣&#xff08;LeetCode&#xff09; 应用条件&#xff1a;回溯 难点&#xff1a; 这道题的难点在于如何去重&#xff0c;肯定不能像我们在组合中去重那样对数组排序。而且我们是要对每一层进行去重&#xff0c;…...

Elasticsearch 全文查询详解

全文查询&#xff08;Full-Text Query&#xff09;是 Elasticsearch 中的核心功能之一&#xff0c;用于对非结构化文本数据进行高效检索。与结构化查询不同&#xff0c;全文查询不仅仅是简单的精确匹配&#xff0c;还包括对文本进行分析和处理&#xff0c;从而实现更复杂的搜索…...

KeyMapper终极指南:重新定义Android设备按键功能的完整教程

KeyMapper终极指南&#xff1a;重新定义Android设备按键功能的完整教程 【免费下载链接】KeyMapper An Android app to remap the buttons on your devices 项目地址: https://gitcode.com/gh_mirrors/ke/KeyMapper 你是否曾想过自定义Android设备的按键功能&#xff1f…...

多模态大语言模型如何优化多机器人系统协同

1. 多模态大语言模型驱动的多机器人系统架构设计多模态大语言模型&#xff08;MLLM&#xff09;正在彻底改变多机器人系统的协同工作方式。这种新型架构通过将自然语言理解、多模态感知和分布式决策能力深度融合&#xff0c;使机器人团队能够像人类工作组一样理解复杂指令并自主…...

如何快速掌握FunClip:阿里开源AI视频剪辑的完整指南

如何快速掌握FunClip&#xff1a;阿里开源AI视频剪辑的完整指南 【免费下载链接】FunClip Open-source, accurate and easy-to-use video speech recognition & clipping tool, LLM based AI clipping intergrated. 项目地址: https://gitcode.com/GitHub_Trending/fu/Fu…...

为什么电路中的阻抗需要引入复数?

1、方便计算说法▼无他&#xff0c;就是图个方便计算而已。请看下题&#xff0c;求如图所示电路中电流的大小。电流的频率与电压频率相同&#xff0c;无非就是求解幅值的变化和相位的变化。▼引用一下以前我的一个知乎回答&#xff0c;数学中的数先是从一维数轴开始。▼因电路的…...

AI辅助生殖:多模态数据融合与深度学习在胚胎评估中的应用

1. 项目概述&#xff1a;当AI遇见生命的起点在辅助生殖技术&#xff08;ART&#xff09;这个关乎无数家庭希望的前沿领域&#xff0c;每一次胚胎移植都像是一场精密的“押注”。医生和胚胎学家们需要在显微镜下&#xff0c;从数个甚至数十个胚胎中&#xff0c;挑选出那个最有潜…...

AI研发团队“隐性崩溃”前的9个信号:SITS2026追踪18个月的142起项目衰变案例全复盘

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;AI研发团队“隐性崩溃”的本质定义与SITS2026研究框架 什么是“隐性崩溃”&#xff1f; AI研发团队的“隐性崩溃”并非指系统宕机或项目终止&#xff0c;而是指团队在表观正常运转下&#xff0c;持续丧…...

5分钟免费解锁Photoshop AVIF插件:新一代图像压缩的终极解决方案

5分钟免费解锁Photoshop AVIF插件&#xff1a;新一代图像压缩的终极解决方案 【免费下载链接】avif-format An AV1 Image (AVIF) file format plug-in for Adobe Photoshop 项目地址: https://gitcode.com/gh_mirrors/avi/avif-format AVIF&#xff08;AV1 Image File F…...

零知识证明与法律科技融合:构建可验证计算驱动的自动化合约执行系统

1. 项目概述与核心价值最近在开源社区里&#xff0c;一个名为Sheygoodbai/vericlaw的项目引起了我的注意。乍一看这个项目名&#xff0c;可能会觉得有些抽象&#xff0c;但深入探究后&#xff0c;我发现它触及了当前一个非常前沿且充满潜力的交叉领域&#xff1a;如何利用可验证…...

基于星座匹配的眼动追踪角膜反射检测技术解析

1. 项目概述&#xff1a;基于星座匹配的角膜反射检测框架在眼动追踪技术领域&#xff0c;瞳孔-角膜反射&#xff08;P-CR&#xff09;方法一直是最可靠的解决方案之一。这种方法的核心在于准确检测和匹配角膜反射点&#xff08;glints&#xff09;——即红外LED在角膜表面形成的…...

Flutter 状态管理架构设计完全指南

Flutter 状态管理架构设计完全指南 引言 状态管理是 Flutter 应用开发的核心问题之一。一个好的状态管理架构能够使代码更加清晰、可维护和可测试。本文将深入探讨 Flutter 状态管理的各种架构模式和最佳实践。 状态管理概述 Flutter 中的状态可以分为以下几类&#xff1a; 局部…...