您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > 百科

Go、Rust、Nim等新兴语言,为什么都抛弃了constructor?

时间:2023-05-30 15:02:10  来源:今日头条  作者:埋头苦干的小码农

在许多新兴语言如 Go、Rust、Nim 中,确实没有传统意义上的构造函数(constructor)。这并不意味着这些语言不能进行类似构造函数的操作,而是它们采用了不同的设计哲学和模式来达到相似的目的。

原因

  1. 不强制使用面向对象编程: 在 Go 和 Rust 中,并不将面向对象编程(OOP)作为主要的编程范式。Go 采用了更加简单的数据结构(结构体,struct)和接口(interface),而 Rust 提倡更多的数据抽象和不可变性。这些语言更加关注数据和行为的分离,而不是将它们封装到对象中。
  2. 更灵活的初始化: 通过普通函数进行对象的初始化,可以提供更大的灵活性。比如,你可以根据不同的参数返回不同类型的对象,或者返回错误,而不是在构造函数中抛出异常。这样做可以更好地进行错误处理。
  3. 易于理解和使用: 构造函数在一些情况下可能会导致代码更加复杂,特别是在涉及到继承和多态的时候。相比之下,普通函数进行初始化更加直观和简单。

每种语言处理对象初始化的方式

  • Go:在 Go 中,你可以使用工厂函数来替代传统的构造函数。工厂函数是一个返回对象的普通函数。
type Foo struct {
    Bar int
}

func NewFoo(bar int) *Foo {
    return &Foo{Bar: bar}
}
  • Rust:Rust 同样使用关联函数(即在 impl 块中定义的函数)来创建和初始化一个新的实例。
struct Foo {
    bar: i32,
}

impl Foo {
    fn new(bar: i32) -> Foo {
        Foo { bar: bar }
    }
}
  • Nim:在 Nim 中,你可以使用过程(proc)来初始化对象。
type Foo = object
    bar: int

proc newFoo(bar: int): Foo =
    return Foo(bar: bar)

总的来说,这些新兴语言虽然没有传统意义上的构造函数,但它们提供了其它方式来进行对象的创建和初始化。这些方式在一些情况下可以提供更多的灵活性和简洁性。



Tags:constructor?   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Go、Rust、Nim等新兴语言,为什么都抛弃了constructor?
在许多新兴语言如 Go、Rust、Nim 中,确实没有传统意义上的构造函数(constructor)。这并不意味着这些语言不能进行类似构造函数的操作,而是它们采用了不同的设计哲学和模式来达到...【详细内容】
2023-05-30  Search: constructor?  点击:(257)  评论:(0)  加入收藏
▌简易百科推荐
用于人工智能开发的主流编程语言都有哪些?
在人工智能开发领域,编程语言的选择至关重要。目前,主流的编程语言主要包括Python、Java、C++、JavaScript和Swift等。这些语言各具特色,适用于不同的人工智能开发场景。首先,Py...【详细内容】
2024-01-31    简易百科  Tags:编程语言   点击:(131)  评论:(0)  加入收藏
探究微处理器开发中的汇编语言的优势与挑战
在计算机编程中,汇编语言是一种低级语言,它可以直接控制计算机的硬件资源。与高级语言相比,汇编语言具有更高的运行效率和更好的控制能力,但同时也更加复杂和难以理解和维护。在...【详细内容】
2023-12-19  松鼠宝贝    Tags:汇编语言   点击:(99)  评论:(0)  加入收藏
选择适合微服务的编程语言,让你的工作事半功倍!
讨论编程语言就像是一场政治辩论。每个开发者都会过分捍卫他/她所使用的编程语言。然而,编程语言应该被看作是它们真正是的东西,即一种工作工具。每种编程语言都有特定的目的...【详细内容】
2023-12-14  爱发白日梦的后端  微信公众号  Tags:编程语言   点击:(178)  评论:(0)  加入收藏
编程语言大比拼:Python、Java、C、C++、Go 实现 'Hello World' 和九九乘法表"
应该90%的IT专业的朋友写的第一段代码就是打印"holle world",每个大学老师都会通过这个方式吸引你对课程产生兴趣。也许有的朋友学的是JAVA开发,有的学的是c,在几年前应该很...【详细内容】
2023-12-11  IT仔的笔记本  微信公众号  Tags:编程语言   点击:(216)  评论:(0)  加入收藏
TypeScript中的null和undefined的区别
在TypeScript中,null和undefined是两个特殊的值,用于表示变量的缺失或未定义。尽管它们在某些情况下可能看起来相似,并且都可以表示"没有值",但它们在语义和用法上存在一些重要...【详细内容】
2023-12-07  科学随想录  微信公众号  Tags:TypeScript   点击:(135)  评论:(0)  加入收藏
面向AI开发的六种最重要的编程语言
作者丨FATIH KÜÇÜKKARAKURT 译者 | 布加迪审校 | 重楼出品 | 51CTO技术栈(微信号:blog51cto)在AI开发界,你使用的编程语言很重要。每种语言有其独特...【详细内容】
2023-12-07    51CTO  Tags:编程语言   点击:(121)  评论:(0)  加入收藏
NLP问题实战:基于LSTM(RNN)和Transformer模型
译者 | 朱先忠审校 | 重楼简介GPT等语言模型最近变得非常流行,并被应用于各种文本生成任务,例如在ChatGPT或其他会话人工智能系统中。通常,这些语言模型规模巨大,经常使用超过数...【详细内容】
2023-11-29    51CTO  Tags:NLP   点击:(273)  评论:(0)  加入收藏
一文了解低级和高级编程语言
中文是一种尽量用简短文字表达更多含义的语言,所以很多时候一句话的含义很容易曲解成别的意思。最近,有人提出C语言是一种中级语言的概念,所以特意介绍一下低级语言和高级语言...【详细内容】
2023-11-23  数字随行  微信公众号  Tags:编程语言   点击:(232)  评论:(0)  加入收藏
JetBrains 发布 2023 调研报告:77% 开发者使用 ChatGPT
IT之家 11 月 21 日消息,JetBrains 日前公布了《2023 开发人员生态系统现状》调研报告,汇集了来自全球 26,348 位开发者的调研结果。《开发者生态系统现状报告》涵盖广泛的主...【详细内容】
2023-11-21    IT之家  Tags:JetBrains   点击:(238)  评论:(0)  加入收藏
Go vs Rust:文件上传性能比较
一、设置所有测试都在配备16G内存的 MacBook Pro M1 上执行。软件版本为: Go v1.20.5 Rust v1.70.0测试工具是一个基于 libcurl 并使用标准线程的自定义工具,能够发送多部分请...【详细内容】
2023-11-20  技术的游戏  微信公众号  Tags:Rust   点击:(174)  评论:(0)  加入收藏
相关文章
    无相关信息
站内最新
站内热门
站内头条