12.Golang中类的表示与封装

目录

概述

Golang中类的表示与封装

类的表示

代码

注释掉的代码,并不能拿来当赋值或获取值来使用。

go 复制代码
package main

import "fmt"

// 类大写则代表,可以被其它包使用
type Hero struct {
	// 属性方法大写,则代表公有,小写,则是私有
	Name  string
	Age   int
	Level int
}

// func (this Hero) show() {
// 	fmt.Printf("name = %s \n", this.getName())
// }

// func (this Hero) getName() string {
// 	return this.Name
// }

// func (this Hero) setName(name string) {
// 	// this 是调用该方法的对象的一个副本(拷贝)
// 	this.Name = name
// }

func (this *Hero) show() {
	fmt.Printf("name = %s \n", this.getName())
}

func (this *Hero) getName() string {
	return this.Name
}

func (this *Hero) setName(name string) {
	// this 是调用该方法的对象的一个副本(拷贝)
	this.Name = name
}

func main() {
	// 创建一个对象
	hero := Hero{Name: "张三", Age: 32, Level: 1}
	hero.show()

	hero.setName("李四")
	hero.show()
}

结果

类的封装

代码

go 复制代码
package main

import "fmt"

type Human struct {
	Name string
	Age  int
}

func (this *Human) GetName() string {
	return this.Name
}

func (this *Human) eat() {
	fmt.Println("human eat..")
}

func (this *Human) work() {
	fmt.Println("human work..")
}

type SuperHuman struct {
	Human
	Level int
}

func (this *SuperHuman) work() {
	fmt.Println("super human work..")
}

func main() {

	ss := SuperHuman{Human{"张三", 1}, 1}
	fmt.Printf("ss = %v \n", ss)

	s := Human{"李四", 1}
	fmt.Println(s)

	sss := SuperHuman{s, 1}
	fmt.Printf("sss = %v \n", sss)
}

结果

结束

Golang中类的表示与封装 至此结束,如有疑问,欢迎评论区留言。

相关推荐
vipxieliang16 分钟前
Go GC 性能优化实践:从 GOGC、GOMEMLIMIT 到分配热点定位
go
小小龙学IT1 小时前
Go 语言 pprof 性能剖析与调优深度解析:把“卡在哪“变成一张可执行的数据图
开发语言·后端·golang
孔令飞1 小时前
很多人想学AI Infra,今天推荐一个 AI Agent / AI Infra 学习路线
云原生·go·ai编程
十二同学啊2 小时前
Go 工程化详解:项目结构、代码规范、测试体系与 CI/CD 实践
ci/cd·golang·代码规范
我不会起名字32212 小时前
Redis 从 0 到 1(十七):订单 30 分钟不支付自动关闭——ZSet 延迟队列 Go 实现
redis·go·延迟队列·zset·订单
利威尔xu13 小时前
Go IM 源码实战(14):本地缓存快 3000 倍,失效却难 10 倍
后端·缓存·微服务·面试·golang
利威尔xu14 小时前
Go IM 源码实战(13):30 个会话只有 2 个红点,未读数错在三条路径
redis·后端·微服务·面试·golang
FungLeo15 小时前
成为全栈·Go 后端篇·从 Node SQLite 到 PostgreSQL:把迁移做成独立交付物
postgresql·golang·sqlite·go·数据库迁移·成为全栈
皓月盈江20 小时前
GO使用Gin框架实现模板定义、解析与渲染
linux·golang·go·gin·定义模板·解析模板·渲染模板
利威尔xu20 小时前
万字详解|Go 进阶(五):sync 包底层:Mutex 自旋 4 次转饥饿,WaitGroup 漏 1 个 Done 挂起 3000 goroutine
后端·golang·并发编程·源码分析·sync