go语言(十)---- 面向对象封装

面向对象的封装

package mainimport "fmt"type Hero struct {Name stringAd  intLevel int
}func (this Hero)  Show(){fmt.Println("Name = ", this.Name)fmt.Println("Ad = ", this.Ad)fmt.Println("Level = ", this.Level)}func (this Hero) GetName() string {return this.Name}func (this Hero) SetName(newName string)  {//this 是调用该方法的对象的一个副本this.Name = newName}func main() {//创建一个对象hero := Hero{Name: "zhang3",Ad: 100,Level:1}hero.Show()hero.SetName("Li4")fmt.Println("------------修改后------------")hero.Show()
}

可以看出修改后,li4,数据并没有变化
在这里插入图片描述
如果加入指针,进行li4的修改后,数据会发生变化

package mainimport "fmt"type Hero struct {Name stringAd  intLevel int
}func (this *Hero)  Show(){fmt.Println("Name = ", this.Name)fmt.Println("Ad = ", this.Ad)fmt.Println("Level = ", this.Level)}func (this *Hero) GetName() string {return this.Name}func (this *Hero) SetName(newName string)  {//this 是调用该方法的对象的一个副本this.Name = newName}func main() {//创建一个对象hero := Hero{Name: "zhang3",Ad: 100,Level:1}hero.Show()hero.SetName("Li4")fmt.Println("------------修改后------------")hero.Show()
}

在这里插入图片描述

  1. 如果首字母大写,表示其他包也能够访问
  2. 如果类的属性首字母大写,表示该属性对外是能够访问的,否则的话,只能类的内部访问。

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

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

相关文章

脆皮大学生,开启自由真我之旅

脆皮大学生,开启自由真我之旅 近几年来,脆皮大学生这个词汇在网络上备受瞩目。形象描绘了一个与传统大学生形象完全不同的群体,他们追求自由自在的生活方式,走在与众不同的道路上。他们在拥有高学历的同时,更懂得享受…

java:流程控制

一、流程控制语句分类 顺序结构分支结构(if,switch)循环结构(for,while,do...while) 二、顺序结构 定义:顺序结构是程序中最基本的流程控制,没有特定的语法结构&#…

Addressables(2) ResourceLocation和AssetReference

IResourceLocation var op Addressables.LoadResourceLocationsAsync(key); var result op.WaitForCompletion(); 把加载的Key塞进去,不难看出,IResourceLocation可以用来获得资源的详细信息 很适合用于更新分析,或者一些检查工具 AssetR…

Oracle架构_数据库底层原理、机制 (授人以渔)

目录 系统全局区SGA 高速缓存缓冲区(数据库缓冲区) 日志缓冲区 共享池 其他结构 用户连接进程 用户进程User Process Server Process服务进程 程序全局区PGA Oracle的connect连接和session会话与User Process紧密相关 后台进程 数据库写入进程(DBWn) 检查点(CKPT)…

第十二篇【传奇开心果系列】Ant Design Mobile of React开发移动应用:内置组件实现酷炫CSS 动画

Ant Design Mobile of React 开发移动应用示例博文系列 第一篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:从helloworld开始 第二篇【传奇开心果系列】Ant Design Mobile of React 开发移动应用:天气应用 第三篇【传奇开心果系列】Ant Design Mobile of Reac…

ChatGPT 如何解决 “Something went wrong. lf this issue persists ….” 错误

Something went wrong. If this issue persists please contact us through our help center at help.openai.com. ChatGPT经常用着用着就出现 “Something went wrong” 错误,不管是普通账号还是Plus账号,不管是切换到哪个节点,没聊两次就报…

进入docker容器,vi: command not found

问题描述: 进入docker容器,查看文件执行vim 命令,报错 vim: command not found。搜索解决方案,说执行一下 apt-get install vim命令,然后又报错 Unable to locate package vim。 解决: 1.执行 npt-get up…

(初研) Sentence-embedding fine-tune notebook

由于工作需要,需要对embedding模型进行微调,我调用了几种方案,都比较繁琐。先记录一个相对简单的方案。以下内容并不一定正确,请刷到的大佬给予指正,不胜感激!!! 一.对BGE模型&…

04章【面向对象(上)】

文章目录 面向对象基本概念类与对象类和对象的定义格式对象与内存分析封装性构造方法this关键字值传递与引用传递对象的一对一关系static关键字main方法分析代码块单例设计模式对象数组与管理 面向对象基本概念 什么是面向对象: 面向对象是一种编程思想。面向对象…

Centos 7 单机部署 consul

一、下载安装 参考官网文档 Install | Consul | HashiCorp Developer 进入Centos 执行下面命令 sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo sudo yum -y install consul 这种方法安装完成…

calloc与realloc和malloc的区别以及new

目录 calloc、realloc 和 malloc 三个函数的区别在于 更详细的示例代码 交叉使用 内存泄漏 悬空指针 内存重叠 new 的语法 使用 new 运算符在堆上创建学生对象的示例 new和malloc都可以用于在堆上分配内存 calloc、realloc 和 malloc 是 C/C 中用于动态内存分配的函…

GPT应用开发:编写插件获取实时天气信息

欢迎阅读本系列文章!我将带你一起探索如何利用OpenAI API开发GPT应用。无论你是编程新手还是资深开发者,都能在这里获得灵感和收获。 本文,我们将继续展示聊天API中插件的使用方法,让你能够轻松驾驭这个强大的工具。 插件运行效…