Golang Go语言写 Web 后端合适吗?

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

null
Golang Go语言写 Web 后端合适吗?

101 回复

太 tm 合适了😊

更多关于Golang Go语言写 Web 后端合适吗?的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


挺合适的啊,我都写了好几年了

啥需求?写的人啥水平?之前用什么比较多?
你这三无问题啊

gin + gorm 就够了

不合适, 建议 rust java

高性能,高并发,你值得拥有

go 生来就是干这个的

业务复杂不适合, 业务简单还可以

业务性很重的不合适



能不能分享一下啥叫复杂业务
Go 处理复杂业务具体有哪些弊端

#2
能不能分享一下,写的什么系统
用的什么框架,项目如何分层、包的组织方式

業務複雜的,還是推薦 JAVA ,JAVA 天生適合做大項目

b 站后端是 go ,如果你认为 b 站还不够复杂的话,那么 go 不适合 web 后端

比较蛋疼,不如 js 。v8 的优化比 golang 好多了

良好吧,相比 python ,js 之类来说工程性会更好。但相对 java ,c#之类的缺少一些运行时特性要写更多重复代码。

合适啊,越复杂越合适呢,毕竟 Go 没啥特殊的语法,也就协程比较麻烦一点。再复杂的东西,你用 Go 写也就那样,大部分人都能看懂,软件后续维护其实真的很重要。毕竟人都是流动的。

真不合适,各位不在推荐 go 来写 web 了,纯属添堵

說是在,B 站的业务不算很复杂

你参考下 goframe 的项目组织方式或者直接用它吧

建议还是 PHP

5 楼,突然蹦出个 rust 。。。一下子没绷住

走出半生,归来仍是 PHP

go 挺合适的
java 都开发完了,go 还在造轮子

你是自己玩还是公司项目? 公司的你问这个问题说明你没决定权,洗洗睡吧. 要是自己玩的随便什么都行.

自己玩很合适,主要是放在 VPS 里占用资源比较少。

Java 天下第一

要不要试试 c#?

Rust 去招聘网站上搜一搜岗位很容易为零 我自学 Rust 都是为了增进 C++理解的 这语言还是慢慢来吧

B 站业务也算复杂?

搞 b 端的不推荐,c 端的还行,有泛型之后也没那么麻烦了

js 表示不服 res.json({msg:“完活”})

业务复杂的就算了,不然需要自己写很多轮子
不像 java 下 Spring 一统天下

用 Kotlin 吧,可以摆脱冗长的 Java 和繁琐的 Go

Go 的类型推导太弱了,泛型还是差点意思

你要是就写写业务,java 最方便。
因为写业务涉及到的方方面面,比如权限配置管理啊之类的乱七八糟的,java 这边基本都有标准实现,并且稳定多年运行功能都够用。
go 就是很多方面要么没有,要么没有标准实现,你说能写吧都能写,但是要自己耗费精力
相似的就是 goframe ,但是这也是山寨版的 spring boot 细节上差很多东西

不能再合适

反正都一样,go 写就是繁琐,语法糖少,不熟悉容易写出 bug 。Kotlin 就是你得先熟悉了才能写🤣

业务复杂的话不合适。

可以考虑用 python 啊
django 自带电池

小项目绰绰有余,简单粗暴部署快

我目前就在用 go 写业务,说实话,不合适。虽然是强类型,但是类型系统弱,需要写大量的代码去处理类型 /数据结构上的转换和封装,判断 err ,判断 nil ,语法糖基本没有。

熟悉就合适吧

qq 后台基本都在用 go 了

如果是调包侠建议 java ,心智负担低一些

我觉得挺合适的,当然你得写的多,能有自己一套的脚手架之类的,总之我是 java 换过来的,其中一个重要的理由就是轻量级,性能又还可以,upx 压缩一下,二进制包也就那么几 m ,反正我是觉得开发 web 在某种程度上是可以提高开发效率的,我现在也是把 java 那套能复用的慢慢 copy ,不能就 grpc 处理,不过泛型啥的还是比较蛋疼,工程管理,本地包管理啥的确实有缺陷 go work 也不是那么好用,编译器只能等官方慢慢更新优化了,但是写并发代码是真简单

让我想了半年前这个帖子. 切勿引战 / 挖坟

https://www.v2ex.com/t/829692?p=2

你会发现大部分时间在找轮子和造自己的轮子

拱火:合适!非常合适,为 go 在 web 开发领域提供发展贡献吧!( doge

造轮子还得 go ,就 kv 类型的存储,我看了一下 go 实现的一大把。。

#24 谢谢提醒,少走 50 年弯路

5 楼,突然蹦出个 rust 。。。一下子没绷住

太合适不过了,从工程角度,代码维护角度都很合适,爽的一批

哪些说复杂业务不适合用 Go 的,请问你们的业务有 Kubernetes ,Docker 这些复杂吗?

我打 PHP 不香?

刚被 golang 循环依赖气得罢工摸会儿鱼上 V 站就看到这个贴。

有没有可能是 go 写 curd 很难受

钱少[大哭]

Java 适合写 Web 吗 ?

Java Web / Go Web / PHP Web / Python Web …

只要能挣钱 asp 都行 😁

#60 瞎说什么实话

web 业务特点,多是处理 http 请求,入参写各种结构,确实有点繁琐。但是性能方面表现好,语法对并发也很友好。

高情商: 未来可期.

新秀 Carbon:都闪开,让我来.🤣

生态不好,好多轮子都没有或者没经过长时间的验证,其他倒是没啥

循环依赖是代码结构设计问题

不适合业务系统,适合造轮子,如果造轮子是你的业务,就当我没说

腾讯 字节 b 站后端都有在用 Go 吧,说写复杂业务不合适的,贵司能达到这几家业务的复杂程度吗?

以前是 Java ,新手 go 的水平。

个人感觉 go 更适合中间件开发,业务逻辑过多的,go 相比较而言,不如其他已经成体系的语言。

go 更适合偏向算法类或者纯 IO 密集型,繁重的业务逻辑会让 go 并不太好维护,当然啦,更多是我水平不够。

nodejs 搞定一切

前一两年对接微信支付,官方文档提供了 java 样例代码也就十几分钟就通了,go 折腾了半天

有用不代表能接受复杂业务 另外腾讯后端主要是 c++ b 站用后端主要是 b 站最开始用的 php 写的后来用 go 重构 go 本身的简单才是 b 站选择 go 的原因 这样能快速把现有的 phper javaer 都转换为 go

一般 最近再把我的个人项目从 go 迁移到 c#

我投 rails 一票(逃

有没有考虑过人家说的业务复杂是说有很多 多表 多源 的 sql 查询,然后一大堆外部 api 需要调用
然后一个报表今天写完明天要改的那种复杂

php ,快上车没时间解释了

建议 Rust 🐶

很多人搞错一点,业务复杂度不等于解决方案的复杂度。互联网大厂的某些项目可能业务不是很复杂,但是因为高负债、高并发等非功能需求导致解决方案实现复杂,这种项目可能 go 是比较合适的。但是如果业务逻辑本身的复杂度很高的项目,可能 go 就不如 c#、java 合适了

go 写业务最大的问题其实还是生态环境不够完善吧,比如之前要搞工作流引擎,最后发现 go 这边没有成熟的方案,而 java 有 Activiti 啥的,就连 bpmn 在 go 这边也只有很原始刚开始做的库,那没办法,就只能自己造轮子了

那 go 主要用来干嘛??

造中间件轮子升职加薪。

微服务噢。
比如说我司,一个 CRUD 业务,基本上可以说就是 1-3 个写入接口这种业务复杂度吧。
后端拆成 10 个左右的项目,有负责热数据的,冷数据的,proxy ,统计,等等。
这样每个项目复杂度就下来了,用 go 就合适。
但是我司基础设施牛逼啊,切流,身份验证,负载均衡,文件系统什么的 都是现成的。

如果你都写在一起,就不好玩了。

这是业务系统?

go 写业务系统纯粹是给自己添堵,go 的设计目标是开发一些基础组件的

在新业务没有历史包袱、并且能够实现人力招聘的前提下,大厂都在拥抱 go ,只剩下半桶水程序员还在吵吵不适合

很多人怕是不知道某些大厂内部的 java 基础设施有多么让人作呕。
没错,我说的就是阿里之流



找个基础设施比阿里好的出来?

没用 go 写过业务代码还真信了你了

#70 有没有可能人家内部已经造了很多轮子

丰富完善能罩得住业务,但是太丑陋了,让人作呕是因为太丑不是它不丰富不完善。另外,好多阿里同学自己吐槽他们内部框架臃肿不堪、性能低下。
我不知道兄弟你是不是阿里的或者是哪个部门的,或许你见过的阿里的东西比较好?能否推荐个我去学习下,免得我也被各种阿里同学或者非阿里同学整天骂阿里的 KPI 开源误导了(不过我看过一些阿里的开源,确实挺让人作呕的)。就是因为听说了这么多,所以阿里的哥们想内推挖我都直接拒绝了,审美取向不合。。。

很多团队还真没怎么用对 go 。尤其历史包袱重的团队,或者比如 php java 转 go 的同学,我并不是鄙视 phper javaer ,而是因为以前积累的基本功造成的技术栈审美取向与 go 确实有较大不同,所以就像很多人喷 go 一样,gopher 也喷绝大多数其他语言的解决方案

上份工作是用 gin 写过 web ,感觉生态还不是很全,业务逻辑复杂的时候,要自己写的逻辑比较多,比较累,但是运行速度效率这方面没什么问题。

看下来还是 java 一桶天下啊,都是框架了

路过,还是想问下说业务复杂的各位,
除工作流之外,正心请教还有哪些属于各位说的复杂的业务?

当然,若是没用微服务来拆,一把梭哈做个复杂的单体应用——这样的情况不用回答,我承认是非常复杂

另外,对于某些说 go 的基础设施不齐全之类(如限流、监控、负载均衡、调用链等),
真心建议去了解下 k8s ,还有服务网格

不可能,基本都是需要一套脚手架+代码生成工具+ bla bla bla ,纯 CRUD 自己要做的事情可少了。可能不比成熟的语言快,例如 php 、python 、java ,但是开发效率肯定不慢…

我们组的后端基本是 go ,比 python 好维护太多了,比 java 代码少且好读

不用太担心泛型不够用、重复的代码、性能不够、生态,uber 和字节都大规模的使用,反正造轮子、看第三方包源码都很方便。

现在基本不用自己造轮子了,先看看这里 https://github.com/avelino/awesome-go

我最喜欢的,松散的 package/struct method 等设计,重构代码、组合代码、测试代码都太方便了,几乎是一行流、一键完成,修改调整文件名都不需要重构代码本身

Golang(通常简称为Go)非常适合用于编写Web后端。以下几点阐述了Go在Web后端开发中的优势:

  1. 性能高效:Go语言具有出色的并发处理能力,通过goroutines和channel可以轻松实现高并发。这使得Go成为处理大量并发请求和构建高性能Web应用的理想选择。

  2. 标准库强大:Go的标准库中包含了一个强大的net/http包,它提供了构建Web服务器和客户端所需的所有基本功能。开发者可以很方便地创建RESTful API、WebSocket服务等。

  3. 生态系统丰富:Go拥有众多开源框架和库,如Gin、Echo、Fiber等,这些框架简化了Web开发过程,提供了路由管理、中间件支持等功能,让开发者能够更专注于业务逻辑。

  4. 编译速度快:Go是一种编译型语言,编译速度快,且编译后的二进制文件体积小巧,便于部署和分发。

  5. 内存管理良好:Go具有自动垃圾回收机制,减轻了开发者在内存管理方面的负担,有助于编写更健壮的代码。

  6. 社区活跃:Go语言社区非常活跃,拥有大量的开源项目和贡献者,这意味着你可以找到丰富的资源和支持来解决开发中遇到的问题。

综上所述,Golang不仅适合用于编写Web后端,而且在很多场景下能够表现出色。无论是构建高性能的RESTful API服务,还是开发需要高并发处理的实时应用,Go都是一个值得考虑的选择。

回到顶部