网站首页 > 教程文章 正文
struct类型:支持两类构造函数:普通构造函数(init)和主构造函数(结构标识符),这二者的区别在哪里?golang语言的结构,成员变量都会有一个默认的初始值(根据变量类型),感觉更精炼一些。
struct 类型是值类型
struct 的成员(包括成员变量、成员属性、构造函数、成员函数、操作符函数(详见操作符重载章节))用 4 种访问修饰符修饰:private、internal、protected 和 public,缺省的修饰符是 internal。==> class类型可以有这些,struct类型感觉定义得有点太乱/复杂了。
mut函数让复杂性更上一筹,甚至感觉有点生硬得自圆其说。
==== 这种设计还是感觉像各种编程语言的杂糅,不够精炼。
struct 只能定义在源文件的顶层作用域。
enum 只能定义在源文件的顶层作用域
模式匹配:支持函数式编程
模式可以分为两类:refutable 模式和 irrefutable 模式。在类型匹配的前提下,当一个模式有可能和待匹配值不匹配时,称此模式为 refutable 模式;反之,当一个模式总是可以和待匹配值匹配时,称此模式为 irrefutable 模式。
class 类型:实现面向对象编程。class 与 struct 的主要区别在于:class 是引用类型,struct 是值类型,它们在赋值或传参时行为是不同的;class 之间可以继承,但 struct 之间不能继承。
class 只能定义在源文件的顶层作用域。
open 修饰符
sealed 修饰符
=== 感觉就是在不断发明新的名字,为什么不能使用其他语言已经有的并已被大家接受的名字?
和 struct 一样,class 中也支持定义普通构造函数和主构造函数,普通构造函数以关键字 init 开头。
=== 可以参考golang的设计,给每一个成员变量根据自身类型设置一个默认值,就可以去掉init函数。
终结器:~init(), 这个不就是C++的析构函数吗?起个新名字有什么意义吗?
问题:struct类型和class类型的init函数是需要手工调用还是自动?
struct/class类型的成员变量, var/let也是需要注意区分使用的。
==== 还是一个字:杂糅,带来的排列组合注意事项,不够简洁。
猜你喜欢
- 2025-09-21 快速了解JavaScript的基础知识_javascript 基础
- 2025-09-21 陌生APP拿到你的摄像头权限后拿到你的“裸照”有多容易
- 2025-09-21 数据结构必修:链表核心操作与 LRU 设计,一篇图解吃透
- 2025-09-21 原 顶 ECMAScript6入门 学习之简介
- 2025-09-21 Rust元编程: 让你的代码在编译时开始「自我繁殖」
- 2025-09-21 别再让误操作背锅!常见防误操作程序底层逻辑,工程师必收藏
- 2025-09-21 Javascript简介和基础数据类型_javascript的数据类型主要包括
- 2025-09-21 Rust中的Condvar条件变量:让线程"听话"的魔法棒
- 2025-09-21 一举两得学编程:Rust 与 Zig 对比学习教程
- 2025-09-21 从零开始的 SwiftUI 互操作_swiftui dsl
- 最近发表
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)