Go 面向对象,多态

news2024/12/23 7:44:58

面向对象

工程结构
在这里插入图片描述

新建一个oop.go

package _oop // Package _oop 引用名称

import (
	"fmt"
	"strconv"
)

// GIRL 常量
const (
	// GIRL 自增
	GIRL Gender = iota
	FIRST
	SECOND
	THIRD
)

type Gender uint8 // 无符号的8位整数类型

// User 结构体
type User struct {
	Name   string
	Age    uint8
	Gender Gender
}

/**
方法参数中带*意思是传递的是结构体的指针,如果修改会影响外部的值,如果不带星则是传入了一个复制出来的值
*/

// AddAge 方法
func (u *User) AddAge() {
	u.Age++
}

// Run 方法
func (*User) Run() {
	fmt.Println("user run")
}

// Sleep 方法
func (*User) Sleep() {
	fmt.Println("user sleep")
}

func UserCase() {
	u := new(User) // &为取地址符号
	u.Run()
	u.Sleep()
	fmt.Println(GIRL)
	fmt.Println(THIRD)
	fmt.Println("修改前的Age" + strconv.FormatInt(int64(u.Age), 10)) // strconv.FormatInt(int64(u.Age), 10) 这里是将十进制的数字转为了string类型
	u.AddAge()
	fmt.Println("修改前的Age" + strconv.FormatInt(int64(u.Age), 10))
}

再写一个main主程序掉用

package main

import _study "study/oop" // 引入另一个go文件 _study为package名称 后边是他的存在路径以根目录为开始

func main() {
	_study.UserCase()
}

多态

工程结构在这里插入图片描述
编写一个新的go文件,在go中只要是实现了接口的方法就算是实现

package polymorphism

import (
	"fmt"
)

type Person interface {
	Run()
	Sleep()
}


// Teacher 结构体
type Teacher struct {
}

// Student 结构体
type Student struct {
}

/**
方法参数中带*意思是传递的是结构体的指针,如果修改会影响外部的值,如果不带星则是传入了一个复制出来的值
*/

// Run Teacher方法
func (*Teacher) Run() {
	fmt.Println("Teacher run")
}

// Sleep Teacher方法
func (*Teacher) Sleep() {
	fmt.Println("Teacher sleep")
}

// Run Student方法
func (*Student) Run() {
	fmt.Println("Student run")
}

// Sleep Student方法
func (*Student) Sleep() {
	fmt.Println("Student sleep")
}

func Process(person Person) {
	person.Run()
	person.Sleep()
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pyinstaller 打包 paddleocr

一、场景 我们在使用pyinstaller打包完以后,在执行时会出现一些第三方库找不到,尤其是paddleocr库二、解决方法 在打包paddleocr的时候,他的一些模块不会跟着一起打包,我们要使用已下方法来进行打包处理一般情况下打包 pyinsta…

被王牌对王牌种草闺蜜机?来看看当贝PadGO

不少朋友都很喜欢热播综艺《王牌对王牌》,细心的朋友又在观看综艺的过程中被种草了可以移动的电视屏幕——闺蜜机。 目前国产闺蜜机比较热门的品牌是当贝PadGO和小度添添闺蜜机。个人在使用体验后更偏向当贝PadGO闺蜜机,因为从配置性能和系统功能当贝PadGO都更胜一筹。 1、4K画…

K8S知识点(六)

(1)资源管理方式1 其他参数 其他参数以json格式显示pod信息 以yaml显示pod信息: 用describe描述容器的详细信息:包括ip啊,镜像啊,端口啊,容器启动经历的历程 创建命名空间Pod: 查询…

排序算法之-冒泡

顺序排序算法原理 从头开始遍历未排序数列,遍历时比较相邻的两个元素,前面的大于后面的,则双方交换位置,一直比较到末尾,这样最大的元素会出现在末尾,接着再依次从头开始遍历剩余未排序的元素,…

upload-labs-1

文章目录 Pass-01 Pass-01 先上传一个正常的图片&#xff0c;查看返回结果&#xff0c;结果中带有文件上传路径&#xff0c;可以进行利用&#xff1a; 上传一个恶意的webshell&#xff0c;里面写入一句话木马&#xff1a; <?php eval($_POST[cmd]); echo "hello&quo…

Google警告黑客如何滥用日历服务作为隐蔽的C2信道

导语 最近&#xff0c;谷歌发布了一份关于黑客如何滥用日历服务作为隐蔽的C2信道的警告。这种新型攻击方式利用了谷歌日历作为C2基础设施&#xff0c;给安全防御带来了新的挑战。本文将介绍这种攻击方式的细节&#xff0c;以及如何防范这一威胁。 Google Calendar RAT&#xff…

三维虚拟沙盘数字全景沙盘M3DGIS系统开发教程第18课

三维虚拟沙盘数字全景沙盘M3DGIS系统开发教程第18课 上一节我们实现了模型的移动控制。这次我们来实现模型的材质控制&#xff0c;首先我们找一个模型。在3dmax中如下&#xff1a; 可以看到这个模型很复杂。分成了很多层。我们先不管它。导入SDK后如下图&#xff1a; 有贴图还…

IP代理如何选择?4大误区你别踩!

近年来&#xff0c;我国互联网商业保持持续发展的状态大环境的优化&#xff0c;大大小小的企业都想乘胜追击&#xff0c;大展宏图&#xff0c;积极推动各项数据业务的进程。 而对于跨境业务来说&#xff0c;代理IP是不可或缺的重要工具之一&#xff0c;市面上代理IP类型众多&a…

React动态生成二维码和毫米(mm)单位转像素(px)单位

一、使用qrcode.react生成二维码&#xff0c;qrcode.react - npm 很简单&#xff0c;安装依赖包&#xff0c;然后引用就行了 npm install qrcode.react或者 yarn add qrcode.react直接上写好的代码 import React, {useEffect, useState} from react; import QRCode from qr…

MySQL中的datetime和timestamp有什么区别

相同点: 存储格式相同 datetime和timestamp两者的时间格式都是YYYY-MM-DD HH:MM:SS 不同点: 存储范围不同. datetime的范围是1000-01-01到9999-12-31. 而timestamp是从1970-01-01到2038-01-19, 即后者的时间范围很小. 与时区关系. datetime是存储服务器当前的时区. 而timesta…

leetcode:2278. 字母在字符串中的百分比(python3解法)

难度&#xff1a;简单 给你一个字符串 s 和一个字符 letter &#xff0c;返回在 s 中等于 letter 字符所占的 百分比 &#xff0c;向下取整到最接近的百分比。 示例 1&#xff1a; 输入&#xff1a;s "foobar", letter "o" 输出&#xff1a;33 解释&…

解决ntfs-3g-mount: mount failed硬盘无法挂载的问题

操作系统&#xff1a;ubuntu 20.04 遇到的问题&#xff1a;开机后挂载usb外接硬盘失败&#xff08;外接硬盘盒&#xff09;&#xff0c;报错&#xff1a;ntfs-3g-mount: mount failed: Device or resource busy 问题原因&#xff1a;openwrt容器&#xff08;--restart always&a…

无人机航迹规划:小龙虾优化算法COA求解无人机路径规划MATLAB(可以修改起始点,地图可自动生成)

一、小龙虾优化算法COA 小龙虾优化算法&#xff08;Crayfsh optimization algorithm&#xff0c;COA&#xff09;由Jia Heming 等人于2023年提出&#xff0c;该算法模拟小龙虾的避暑、竞争和觅食行为&#xff0c;具有搜索速度快&#xff0c;搜索能力强&#xff0c;能够有效平衡…

【Devchat-AI】编程得力助手,DevChat会让你对编程有新理解新认识

2023年&#xff0c;注定是一个AI大语言模型百花齐发的一年&#xff0c;从chatGPT开始&#xff0c;紧随其后&#xff0c;文心一言&#xff0c;通义千问&#xff0c;星火等等都发布了各自的语言大模型&#xff0c; 各有优势&#xff0c;但也能看出来&#xff0c;还有很多长的路要…

记一次经典SQL双写绕过题目[极客大挑战 2019]BabySQL 1

题目环境&#xff1a; 作者已经描述进行了严格的过滤 做好心理准备进行迎接 判断注入类型 admin 1’ 字符型注入万能密码注入 admin 1’ or ‘1’1 报错 已经是字符型注入了&#xff0c;所以的话只有or这里存在了过滤 联想到buuctf里面还没有碰到双写绕过的题目 所以这里斗胆试…

创建asp.net core mvc项目

一、安装vs2019 百度搜索【visual studio社区版下载】&#xff0c;进入微软官网 二、安装环境 运行vs2019,点击“工具”->“获取工具和功能” 三、打开vs2019 1.“文件”->“新建”->“项目”-> “ASP.Net Core Web 应用&#xff08;模型-视图-控制器&#xff09…

Linux运维常见故障排查方法及修复大全二部

⼀、系统故障 1. linux系统⽆法启动 原因1: ⽂件系统配置不当,⽐如/etc/fstab⽂件等配置错误或丢失,导致系统错误⽆法启动。⼀般是⼈为修改错误 或者⽂件系统故障。 排查⽅法:系统配置/etc/fstab错误或丢失⽽⽆法启动,当启动的时候,出现starting system logger后停⽌了…

Springboot中解析JSON字符串(jackson库ObjectMapper解析JSON字符串)

1、ObjectMapper与JSONObject比较 1、ObjectMapper属于jackson库的一部分,JSONObject属于alibaba的fastjson&#xff0c;两者各有优劣&#xff0c;可根据自己的系统环境选择使用哪种技术。 2、目前来看&#xff0c;Jackson社区相对活跃&#xff0c;Spring MVC和Spring Boot都…

【大数据】NiFi 中的处理器(一):GenerateTableFetch

NiFi 中的处理器&#xff08;一&#xff09;&#xff1a;GenerateTableFetch 1.简介2.应用场景3.示例3.1 案例一&#xff1a;无输入流文件&#xff0c;来源表含增量字段3.2 案例二&#xff1a;无输入流文件&#xff0c;不含增量字段3.3 案例三&#xff1a;无输入流文件&#xf…

java计算机毕业设计SpringBoot在线答疑系统

项目介绍 本文从学生的功能要求出发&#xff0c;建立了在线答疑系统&#xff0c;系统中的功能模块主要是实现管理员权限&#xff1b;首页、个人中心、学生管理、教师管理、问题发布管理、疑难解答管理。教师权限&#xff1a;首页、个人中心、疑难解答管理、试卷管理、试题管理…