Go 面向对象编程快速入门 | 学习笔记

简介: 快速学习 Go 面向对象编程快速入门

开发者学堂课程【Go 语言核心编程 - 面向对象、文件、单元测试、反射、TCP 编程Go 面向对象编程快速入门】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/626/detail/9667


Go 面向对象编程快速入门

 

内容介绍:

一、结构体与结构体变量的关系

二、Go 面向对象编程快速入门

 

前面我们已经学习了 Golang 语言面向对象编程的特点,并简单认识了结构体,本节课要学习的内容是结构体究竟是什么?其与结构体变量(实例/对象)的关系是什么?

 

一、结构体与结构体变量的关系

结构体变量也可以称为实例或对象,再以养猫的故事为例,来理解结构体与结构体变量(实例/对象)的关系。

猫的品种有很多,但不同品种的猫总会有相同的属性,或称字段,如名字(Name)、年龄(Age)、颜色(Color)等;此外,它们可能还有相同的行为(方法),如它们都会叫、睡觉、进食、做算数题等,此时就可以将这些猫绑定一些行为方法。将所有猫的特征提取出来放到一个数据类型中,这个数据类型就叫结构体,即 Cat 结构体。然后,根据 Cat 结构体数据类型,可以创建多个实例或变量。也就是说,通过提取事物相同的特征和行为可以形成一种数据类型,即结构体,通过该数据类型可以创建多种变量/实例。如 int 是一种数据类型,它可以包括多个变量,可以定义多个 int 类型的变量 a,b,...,而 Cat 结构体也是一种数据类型,故也可以创建多个 Cat 的变量,如“小黄猫”“小白猫”“小花猫”等。换言之,结构体与结构体变量(实例/对象)的关系可以概括为:通过提取事物共同的字段及方法,可以形成一个数据类型,即结构体,通过这种数据类型可以创建多个变量/实例。其示意图如下:

image.png

总结:

①将一类事物的特征提取出来(如猫类),形成一个新的数据类型,这个数据类型就是一个结构体。

②通过这个结构体我们可以创建多个变量(实例/对象)。

③此处的事物可以一切事物,如 Person、Fish、或工具类,等。从猫结构体到变量,就是创建一个 Cat 结构体变量,也可以说是定义一个结构体变量,具体的事物种类要依编程需求不同来确定。

 

二、Go面向对象编程快速入门

1.利用结构体(struct)以面向对性的方式解决养猫问题

张老太养了两只猫猫:一只名字叫小白,今年3岁,白色。另一只叫小花,今年100岁,花色。请编写一个程序,当用户输入小猫的名字时,就显示该猫的名字,年龄,颜色。如果用户输入的小猫名错误,则显示张老太没有这只猫猫。

代码演示:

package main

import (

"fmt"

)

//定义一个 Cat 结构体的各个字段/属性,放入到 Cat 结构体进行管

理,与先前的单独定义变量、数组等方式分散管理各个属性不同,结

构体可将各个属性统一管理和维护

type Cat struct {

Name string

Age int

Color int

////猫的名字、年龄和颜色是猫的字段,且各字段名称的首字母大写,说明该字段支持公开使用

}

func main() {

//创建一个Cat变量

var cat1 Cat    

//类似于 var a int,是指 cat1的数据类型是 Cat,当然 int 也可以绑定方法,后面会学到;当定义了 cat1之后,该猫的字段(属于值类型)就已经分配了,若输入 fmt.Println("cat1=",cat1)。则输出结果为 cat1= < 0 >,虽然该处仅显示一个“0”,但其确实包括了 cat1的三个属性,名字一个默认值,显示为一个空的字符串"",0代表年龄,颜色也显示为一个空的字符串"",也就是说该输出结果是由于没有为字段赋值而导致的。

cat1.Name = "小白"

cat1.Age = 3

cat1.Color = "白色"

//变量赋值方式:变量名称.字段名= ...

//此时输入 fmt.Println("cat1=",cat1),输出结果显示为 cat1= <小白 3 白色>,包含了3个字段。使用结构体管理数据十分便捷,若要获得某只猫的数据信息,只要输入其结构体的名称,其他信息即可通过字段名访问。

fmt.Println("猫猫的信息如下:")

fmt.Println("name=",cat1.Name)

fmt.Println("age=",cat1.Age)

fmt.Println("color=",cat1.Color)

}

输出结果:

猫猫的信息如下:

name= 小白

age= 3

color= 白色

进而我们可以发现通过一个结构体可以将一只猫的所有字段都进行统一管理。

2. 假设要再增加一个字段,如猫的爱好“hobby”

代码演示:

package main

import (

"fmt"

)

type Cat struct {

Name string

Age int

Color int

Hobby string

}

func main() {

var cat1 Cat    

cat1.Name = "小白"

cat1.Age = 3

cat1.Color = "白色"

cat1.Hobby = "吃<・)))><<"

//若此处不对其进行赋值,代码运行仍不报错,只是输出结果为空字符。

fmt.Println("猫猫的信息如下:")

fmt.Println("name=",cat1.Name)

fmt.Println("age=",cat1.Age)

fmt.Println("color=",cat1.Color)

fmt.Println("hobby=",cat1.Hobby)

}

输出结果:

猫猫的信息如下:

name= 小白

age= 3

color= 白色

hobby= 吃<・)))><<

可发现面向对象编程利用结构体 struct 可轻松实现对属性/字段的管理。该种方法可以对结构体“Cat”绑定方法,如“小猫通过学习可以做算术题”;此外,该种方法还可以对其属性绑定方法,后面会陆续讲到。总之,利用结构体 struct 面向对象编程对管理属性较多的物体,对编程来说十分有利。

结构体 struct 面向对象编程方式的核心代码主要包括以下两部分:

(1)定义结构体(即定义结构体及其包含的物体的属性)

type Cat struct {

Name string

Age int

Color int

Hobby string

}

(2)调用结构体

var cat1 Cat    

cat1.Name = "小白"

cat1.Age = 3

cat1.Color = "白色"

fmt.Println("猫猫的信息如下:")

fmt.Println("name=",cat1.Name)

fmt.Println("age=",cat1.Age)

fmt.Println("color=",cat1.Color)

通过本节课,我们可以体会到结构体 struct 的便捷之处,其解决了 bool 管理和 bool 维护问题,还可以为之绑定方法,对编程而言十分有利。

相关文章
|
6月前
|
Java Go C++
Go语言中的面向对象编程实践
【2月更文挑战第10天】本文将深入探讨在Go语言中如何进行面向对象编程实践。我们将了解如何在Go中实现封装、继承和多态,以及如何利用结构体、接口和方法来构建健壮和可维护的对象导向程序。通过实际代码示例,我们将更好地理解Go的OOP特性,并学习如何有效地运用它们。
|
6月前
|
监控 安全 Java
Go语言学习笔记(一)
Go语言学习笔记(一)
124 1
|
6月前
|
安全 Java Go
Go语言基础与面向对象编程概念
【2月更文挑战第10天】本文旨在介绍Go语言的基本特性和面向对象编程(OOP)的核心概念,以及如何将这两者结合起来。通过Go语言的结构体和方法实现封装、继承和多态,让读者深入理解面向对象编程在Go中的实现方式。文章适合对Go语言感兴趣的初学者和想要了解OOP在Go中如何应用的开发者。
|
Go
深度解析:Go语言面向对象编程和方法调用机制
深度解析:Go语言面向对象编程和方法调用机制
71 0
Go语言的条件控制语句及循环语句的学习笔记
本文是Go语言的条件控制语句和循环语句的学习笔记,涵盖了if语句、if-else语句、if嵌套语句、switch语句、select语句以及for循环和相关循环控制语句的使用方法。
Go语言的条件控制语句及循环语句的学习笔记
|
2月前
|
存储 Go
Go: struct 结构体类型和指针【学习笔记记录】
本文是Go语言中struct结构体类型和指针的学习笔记,包括结构体的定义、成员访问、使用匿名字段,以及指针变量的声明使用、指针数组定义使用和函数传参修改值的方法。
|
2月前
|
人工智能 算法 搜索推荐
Go学习笔记-代码调
近年来,人工智能技术飞速发展,Cody作为由Sourcegraph开发的一款AI驱动编码助手,应运而生。它不仅提供代码预测与补全,还能深度理解代码上下文,为开发者提供准确建议,提升编码效率和质量。Cody能识别潜在错误并提出修复建议,缩短调试时间,同时进行智能代码审查,帮助优化代码结构和风格。未来,随着AI技术进步,Cody将不断学习优化,成为开发者不可或缺的伙伴,推动编程领域的创新与发展。
33 0
|
3月前
|
设计模式 Go
Go语言中的面向对象编程(OOP)
Go语言中的面向对象编程(OOP)
|
6月前
|
数据采集 人工智能 搜索推荐
快速入门:利用Go语言下载Amazon商品信息的步骤详解
本文探讨了使用Go语言和代理IP技术构建高效Amazon商品信息爬虫的方法。Go语言因其简洁语法、快速编译、并发支持和丰富标准库成为理想的爬虫开发语言。文章介绍了电商网站的发展趋势,如个性化推荐、移动端优化和跨境电商。步骤包括设置代理IP、编写爬虫代码和实现多线程采集。提供的Go代码示例展示了如何配置代理、发送请求及使用goroutine进行多线程采集。注意需根据实际情况调整代理服务和商品URL。
快速入门:利用Go语言下载Amazon商品信息的步骤详解
|
5月前
|
Java Go
Go 语言基础之面向对象编程
Go 语言基础之面向对象编程