【GO 编程语言】面向对象

news2024/11/18 9:42:37

指针与结构体


文章目录

  • 指针与结构体
  • 一、OOP 思想
  • 二、继承
  • 三、方法


在这里插入图片描述


一、OOP 思想

Go语言不是面向对象的语言,这里只是通过一些方法来模拟面向对象,从而更好的来理解面向对象思想

  • 面向过程的思维模式
    • 1.面向过程的思维模式是简单的线性思维,思考问题首先陷入第一步做什么、第二步做什么的细节中,这种思维模式适合处埋简单的事情。
    • 2.面向对象的思维模式说白了就是分类思维模式。首先思考解决问题,需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
  • 面向对象的三大特点:封装、继承、多态

二、继承

继承就是子类继承父类的特征和行为,使得子类具有父类的属性和方法,使得子类具有父类相同的行为。子类会具有父类的一般特性也会具有自身的特性。

Go 使用结构体嵌套实现继承

package main

import "fmt"

// 1、定义一个父“类”结构体
type Person struct {
	name string
	age  int
}

// 2、定义一个子“类”结构体
type Student struct {
	Person        // 匿名变量、继承
	school string // 子类自己的属性字段
}

func main() {

	g1 := Person{name: "guan", age: 18}
	fmt.Println(g1.name)

	g2 := Student{Person{name: "guan0001", age: 22}, school: "NNU"}
	fmt.Println(g2.Person.name)
	fmt.Println(g2.name)
	// 提升字段
	// 对于Student来说,Person是匿名字段,Person中的属性 name、age就叫做提升字段
	// 提升字段可以通过名字直接访问不需要通过结构体名Person
	var g3 Student
	g3.name = "guan003"
	g3.school = "NNU"
	fmt.Println(g3)
}

三、方法

什么事方法

Go 语言中同时拥有函数和方法。

  • 方法:

    • 某个类别的行为功能,需要制定的接受者调用
    • 一段独立的功能代码,可以直接调用
  • 函数

    • 一段独立功能的代码,可以直接调用
    • 命名不能冲突
package main
import "fmt"
type Dog struct {
	name string
	age  int
}
type Cat struct {
	name string
	age  int
}

// 方法定义
func (dog Dog) eat() {
	fmt.Println("Dog,eating")
}
func (dog Dog) sleep() {
	fmt.Println("Dog,sleeping")
}
func (cat Cat) eat() {
	fmt.Println("Cat,eating")
}
func main() {
	dog := Dog{name: "wangwangDog", age: 1}
	dog.eat()
	dog.sleep()
	cat := Cat{name: "miaomiaoCat", age: 2}
	cat.eat()

}

在这里插入图片描述

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

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

相关文章

苹果电脑壁纸软件Irvue for mac激活

Irvue是一款Mac上的壁纸软件,里面包含了数千张来精彩照片,方便用户将喜欢的照片设置为壁纸。以下是Irvue软件的一些主要特点和功能: 丰富的壁纸资源:Irvue提供了数千张来自Unsplash的高分辨率照片,涵盖了风景、建筑、…

【前段基础入门之】=>元素定位布局

导语: CSS 元素定位,是目前 CSS 页面布局的一种主要方式。 文章目录 相对定位开启相对定位相对定位的参考点相对定位的特点 绝对定位开启绝对定位绝对定位的参考点绝对定位的特点 固定定位开启固定定位固定定位的参考点固定位的特点 粘性定位开启粘性定位…

详解C语言—编译与链接

目录 1、程序的翻译环境 2、C语言程序的编译链接 3、程序执行的过程: 1、程序的翻译环境 在ANSI C标准的任何一种实现中,存在两个不同的环境。 第1种是翻译环境,在这个环境中源代码被转换为可执行的机器指令。 第2种是执行环境&#xff0…

基于SSM的电动车上牌管理系统(有报告)。Javaee项目。

演示视频: 基于SSM的电动车上牌管理系统(有报告)。Javaee项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系结构,通过Spring SpringM…

【3】c++设计模式——>UML表示类之间的关联关系

关联关系 关联(Assocition)关系是类与类之间最常见的一种关系,它是一种结构化的关系,表示一个对象与另一个对象之间有联系,如汽车和轮胎、师傅和徒弟、班级和学生等。在UML类图中,用(带接头或不…

JVM篇---第一篇

系列文章目录 文章目录 系列文章目录一、知识点汇总二、知识点详解:三、说说类加载与卸载一、知识点汇总 JVM是Java运行基础,面试时一定会遇到JVM的有关问题,内容相对集中,但对只是深度要求较高. 其中内存模型,类加载机制,GC是重点方面.性能调优部分更偏向应用,重点突出实践…

专业图标制作软件 Image2icon 最新中文 for mac

Image2Icon是一款用于Mac操作系统的图标转换工具。它允许用户将常见的图像文件(如PNG、JPEG、GIF等)转换为图标文件(.ico格式),以便在Mac上用作应用程序、文件夹或驱动器的自定义图标。 以下是Image2Icon的一些主要功…

基于vc6+sdk51开发简易文字识别转语音的程序

系统:window7 软件:vc6.0 目的:简易文字转语音真人发声 利用2023国庆小长假,研究如何将文言转语音,之前在网上查询相关知识,大致了解微信语音转换,翻译官之类软件的原理,但要加入神…

python二次开发CATIA:旋转楼梯

旋转楼梯,也称为螺旋形或螺旋式楼梯,是一种围绕单柱或中心轴旋转而上的楼梯类型。由于其流线造型美观、典雅,并且能够节省空间,因此受到很多人的喜爱。这种楼梯最早可以追溯到公元前1000年左右,当时在所罗门王的宫殿中…

【4】c++设计模式——>UML表示类之间的聚合关系

聚合关系表示整体与部分的关系,在聚合关系中,成员对象时整体的一部分,但是成员对象可以脱离整体对象独立存在,当整体被析构销毁的时候,组成整体的这些子对象是不会被销毁的,是可以继续存活,并在…

Matlab论文插图绘制模板第117期—气泡云图

之前的文章中,分享了Matlab气泡图的绘制模板: 进一步,分享一种特殊的气泡图:气泡云图,先来看一下成品效果: 特别提示:本期内容『数据代码』已上传资源群中,加群的朋友请自行下载。有…

【STL】用哈希表(桶)封装出unordered_set和unordered_map

⭐博客主页:️CS semi主页 ⭐欢迎关注:点赞收藏留言 ⭐系列专栏:C进阶 ⭐代码仓库:C进阶 家人们更新不易,你们的点赞和关注对我而言十分重要,友友们麻烦多多点赞+关注,你们的支持是我…

如何在企业网站里做好网络安全

在当今数字时代,网站不仅仅是企业宣传和产品展示的平台,更是日常生活和商业活动中不可或缺的一部分。然而,随着网络技术不断发展,网站的安全问题日益凸显。保护网站和用户数据的安全已经成为至关重要的任务,以下是一些…

C#学生选课及成绩查询系统

一、项目背景 学生选课及成绩查询系统是一个学校不可缺少的部分,传统的人工管理档案的方式存在着很多的缺点,如:效率低、保密性差等,所以开发一套综合教务系统管理软件很有必要,它应该具有传统的手工管理所无法比拟的…

进程间通信-内存映射

内存映射是通过将一个进程的虚拟内存空间映射到另一个进程的虚拟内存空间来实现的。这样,两个进程可以共享同一块物理内存,从而实现数据的共享。内存映射通常通过操作系统提供的特定系统调用来完成。 下面是使用内存映射进行进程间通信的一般步骤&…

29 drf-Vue个人向总结-2

文章目录 drf项目总结2重写create自定义验证类获取个性化内容 与 lookup_field 的用处重写get_queryset,get_serializer_class类docs帮助文档支付宝支付原理(微信同原理)使用流程创建公钥私钥使用的理论介绍使用的代码介绍支付宝与Drf的联合使…

扫雷 | C语言 | 简单易懂 | 扫雷相关知识点总结

扫雷思路 相信大家都有玩过扫雷吧!其实在我们学习完C语言中函数和数组之后,我们就有能力制作一个简单的扫雷小游戏了。 先考虑扫雷游戏的思路: 扫雷游戏我们需要利用二维数组将其进行初始化以及赋值“雷”,就以9*9个雷盘来分析…

集合-Map系列

系列文章目录 1.集合-Collection-CSDN博客​​​​​​ 2.集合-List集合-CSDN博客 3.集合-ArrayList源码分析(面试)_喜欢吃animal milk的博客-CSDN博客 4.数据结构-哈希表_喜欢吃animal milk的博客-CSDN博客 5.集合-set系列集合-CSDN博客 6.集合-Map系列-CSDN博客 文章目…

指针详解第三部分

1. 字符指针变量 一种指针类型为字符指针 char*(下面有两个代码表示了两种不同的用法) int main() {char ch w;char* pc &ch;*pc w;return 0; }int main() {const char* pstr "hello bit.";//这⾥是把⼀个字符串放到pstr指针变量⾥了…

什么是JWT?深入理解JWT从原理到应用

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《ELement》。🎯🎯 &#x1…