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

面向对象的封装

go 复制代码
package main

import "fmt"

type Hero struct {
	Name string
	Ad  int
	Level 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的修改后,数据会发生变化

go 复制代码
package main

import "fmt"

type Hero struct {
	Name string
	Ad  int
	Level 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. 如果类的属性首字母大写,表示该属性对外是能够访问的,否则的话,只能类的内部访问。
相关推荐
可爱的秋秋啊2 分钟前
简单网站编写
开发语言·前端
冬夜戏雪4 分钟前
[学习日记][springboot 1-7][leetcode 6道]
java·开发语言·学习
QX_hao6 分钟前
【Go】--数据类型
开发语言·后端·golang
h7997108 分钟前
redis lua脚本(go)调用教程以及debug调试
redis·golang·lua
趣味编程11113 分钟前
go的学习2---》并发编程
学习·golang·perl
桦说编程16 分钟前
线程池拒绝策略避坑:谨慎使用抛弃策略,可能导致系统卡死
java·后端
星秀日22 分钟前
框架--MyBatis
java·开发语言·mybatis
沐知全栈开发32 分钟前
Ruby 条件判断
开发语言
BingoGo36 分钟前
PHP 15 个高效开发的小技巧
后端·php
锥栗38 分钟前
【Redis】【缓存】理解缓存三大问题:缓存穿透、缓存击穿与缓存雪崩及解决方案
java·后端·面试