Golang面向对象基础:方法与结构体
"面向对象-golang基础" Golang是一种由Google开发的编程语言,旨在结合C语言的简洁性和现代编程语言的特性。它不是传统的面向对象语言,但通过接口实现了多态性,支持函数式编程、过程式编程以及面向对象编程的元素。在Golang中,函数的另一种形态是带有接收者的函数,这被称为method。 1. 方法(Method)定义:方法是绑定到特定类型的函数,可以通过类型实例来调用。例如,`Rectangle`和`Circle`结构体都有一个名为`area`的方法,分别计算矩形和圆的面积。 ```go type Rectangle struct { width, height float64 } func (r Rectangle) area() float64 { return r.width * r.height } type Circle struct { radius float64 } func (c Circle) area() float64 { return c.radius * c.radius * math.Pi } ``` 2. 方法继承:当一个结构体包含另一个结构体作为匿名字段时,可以继承其方法。在示例中,`Employee`结构体包含`Human`结构体,因此可以调用`Human`结构体定义的方法。 ```go type Human struct { name string age int } type Employee struct { Human // 匿名字段 company string } ``` 3. 方法重写:如果子类型(如`Employee`)定义了与父类型(如`Human`)相同的方法,那么子类型的方法会覆盖父类型的方法。在示例中,`Employee`结构体重写了`Human`的`SayHi`方法。 ```go // Human 定义method func (h Human) SayHi() { } // Employee 的method重写Human的method func (e Employee) SayHi() { } ``` 4. 不支持方法重载:Golang不支持同名方法具有不同参数列表的重载现象,所以每个方法名必须是唯一的。 Golang的基本语法包括数据类型、变量定义、控制结构(如if、for、switch)、函数、结构体、面向对象(如方法和接口)、并发(goroutine和channel)、接口、导入和包管理、主函数(main)、初始化函数(init)以及测试(test)。Golang还具有类型安全和内存安全特性,使用指针但限制其操作,以防止内存错误。它有内置的内存垃圾回收机制,支持跨平台编译,并且专为网络通信、并发控制和分布式计算设计。Golang的类型系统包括布尔、字符串以及各种整数、浮点数和复数类型,还有数组、切片、映射等复杂数据结构。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pt](https://img-home.csdnimg.cn/images/20210720083646.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://profile-avatar.csdnimg.cn/3bc4fd04144243b9b5d9f446f801a449_weixin_42191480.jpg!1)
- 粉丝: 15
- 资源: 2万+
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 解决Eclipse配置与导入Java工程常见问题
- 真空发生器:工作原理与抽吸性能分析
- 爱立信RBS6201开站流程详解
- 电脑开机声音解析:故障诊断指南
- JAVA实现贪吃蛇游戏
- 模糊神经网络实现与自学习能力探索
- PID型模糊神经网络控制器设计与学习算法
- 模糊神经网络在自适应PID控制器中的应用
- C++实现的学生成绩管理系统设计
- 802.1D STP 实现与优化:二层交换机中的生成树协议
- 解决Windows无法完成SD卡格式化的九种方法
- 软件测试方法:Beta与Alpha测试详解
- 软件测试周期详解:从需求分析到维护测试
- CMMI模型详解:软件企业能力提升的关键
- 移动Web开发框架选择:jQueryMobile、jQTouch、SenchaTouch对比
- Java程序设计试题与复习指南
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)