Golang Go语言中适合用面向对象的方式编程吗?

发布于 1周前 作者 h691938207 来自 Go语言

刚入坑,网上看了一些关于 Go 中使用面向对象的方法,感觉很难理解


Golang Go语言中适合用面向对象的方式编程吗?
26 回复

当然不适合。不要照搬其他语言的写法。

更多关于Golang Go语言中适合用面向对象的方式编程吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


oop 和 fp 都鸡肋的一门神奇语言

面向 err != nil 编程 XD

其实是面向接口编程。接受了这个设定还蛮不错的

把 Go 看做 C,一切豁然开朗

不适合

go 没有继承

golang 连 class 都没有,所谓的方法也只是函数的语法糖。

不过不支持经典的面向对象是故意设计成这样的,有很多优点。

面向接口编程

面向 err != nil 编程 +1

就是看打这篇文章的翻译版,感觉如果这么搞面向对象,代码写起来应该会很痛苦,看代码的人更痛苦吧

这么一说是不适合,我之前还一直硬写成面向对象的,思维僵化了。
#7

学了半天 Clojure 发现没有什么应用场景,弃坑了,可惜了这么优美的语法(以及若干买书的钱)

想请教下。没有 C/C++/Java 基础可以直接学 Go 吗?

第一门语言是 PHP



据说 Clojure 是当今全球程序员薪资排名第一的开发语言呐

clojure 这 lisp 语法看上去 确实好新鲜

有 php 的基础很容易入门,理解指针和引用会麻烦一点。

对了,处理 Json 会让你无比怀念 php。

大概是因为 lisp 的语法拦住了大部分初级程序员吧

Go 有面向对象?其实那只是操作结构体的函数而已。

还有 err != nil 不一定非要这么写这么多,
如果有大量出错就不继续执行的可以封个 func 有错误直接 panic 然后在 defer 里 recover 下,省好多事情。

有得必有失,要是非常完美,那就会淘汰很多语言了。

还是又继承的,跟 C 语言一样,可以采用 struct 继承

应用 oop 的思想完全没问题,虽然没有了继承,但仍旧可以使用组合以及 mixin 的方式来处理对象关系。

golang 适合 oop 啊,只是不要继承,使用组合的方式扩展类。interface 完美支持 多态。还不要多余的声明,只要实现了 interface 定义的方法即可

struct 怎么继承,最多是组合吧。Rob pike 特别不喜欢继承

go 注重设计。而不仅仅是代码复用。
效率是她的一大特征。

面向对象,你想写当然可以,更何况 C 都可以封装

在Golang(通常简称为Go)语言中,虽然它不像Java或C++那样传统意义上的纯面向对象编程语言,但Go语言依然提供了足够的机制来支持面向对象编程(OOP)的核心理念,如封装、继承和多态,尽管这些特性在Go中的实现方式与传统OOP语言有所不同。

  1. 封装:Go通过结构体(struct)和方法(method)接收者来实现封装。你可以将数据和操作这些数据的方法绑定在一起,从而隐藏内部实现细节。

  2. 继承:Go没有直接的类继承机制,但可以通过嵌套结构体和接口来实现类似的功能。嵌套结构体允许你组合不同的数据结构,而接口则提供了一种抽象层,使得不同类型的结构体可以实现相同的接口方法,达到多态的效果。

  3. 多态:Go的接口是实现多态的关键。一个接口可以定义一组方法,而任何实现了这些方法的类型都隐式地实现了该接口。这允许函数以接口类型为参数,从而接受多种类型的值,实现动态行为。

因此,虽然Go的OOP风格更为简洁和直接,但它完全能够支持面向对象的编程范式。在Go中,更常见的是通过组合和接口来实现代码复用和模块化,而不是传统的类继承。这种设计哲学使得Go代码更加清晰、易于理解和维护。

回到顶部