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中类的表示与封装 至此结束,如有疑问,欢迎评论区留言。

相关推荐
Bony-6 小时前
Go语言完全学习指南 - 从基础到精通------语言基础篇
服务器·开发语言·golang
喵个咪9 小时前
开箱即用的GO后台管理系统 Kratos Admin - 站内信
后端·微服务·go
007php00712 小时前
某游戏互联网大厂Java面试深度解析:Java基础与性能优化(一)
java·数据库·面试·职场和发展·性能优化·golang·php
Mgx15 小时前
用 Go 手搓一个 NTP 服务:从“时间混乱“到“精准同步“的奇幻之旅
go
wohuidaquan17 小时前
本地生活曝光缺失?GEO语义锚点来救场
go
代码扳手18 小时前
Golang + Genkit 实战:告别手动周报,让 AI 帮你整理一切!
go·ai编程
豆浆whisky18 小时前
Go内存管理最佳实践:提升性能的Do‘s与Don‘ts|Go语言进阶(17)
开发语言·后端·golang
砖业林coco20 小时前
go语言使用 zhinao-go 轻松调用 360智脑
llm·go
Yeats_Liao21 小时前
Go Web 编程快速入门 18 - 附录B:查询与扫描
开发语言·前端·后端·golang
百锦再21 小时前
第6章 结构体与方法
android·java·c++·python·rust·go