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

相关推荐
影灵衣丶1 天前
Go 1.25 实战解读:绿茶 GC 与容器核心数感知(工程影响与落地)
后端·go
一直_在路上1 天前
突发高流量应对之道:Go语言限流、熔断、降级三板斧
面试·go
程序员爱钓鱼1 天前
Go语言100个实战案例-项目实战篇:股票行情数据爬虫
后端·go·trae
程序员爱钓鱼2 天前
Go语言实战案例 — 项目实战篇:简易博客系统(支持评论)
前端·后端·go
郭京京3 天前
go框架gin(中)
后端·go
郭京京3 天前
go框架gin(下)
后端·go
一直_在路上3 天前
Go 语言微服务演进路径:从小型项目到企业级架构
架构·go
程序员爱钓鱼3 天前
Go语言实战案例 — 项目实战篇:任务待办清单 Web 应用
后端·google·go
o0o_-_4 天前
【go/gopls/mcp】官方gopls内置mcp server使用
开发语言·后端·golang
lypzcgf4 天前
Coze源码分析-资源库-创建知识库-后端源码-应用/领域/数据访问
后端·go·coze·coze源码分析·智能体平台·ai应用平台·agent平台