应该如何使用 Go 舒服、优雅地开发 Web 项目?

2021-12-13 20:23:16 +08:00
 ZGLHHH

我是从 PHP 转 Go 的,用 PHP 时是用 Laravel 框架写的 web 程序,且极度依赖 Laravel ;转了 Go ,用 Gin 框架 写 web 程序。

目前体验下来,感觉比较烦躁,一个模块至少要有 3 个近乎一样的结构体:HTTP 请求创建 /更新用的、HTTP 响应用的、Gorm 用的。

PHP 是弱类型语言,Go 是强类型语言且啰嗦,确实不能用相同的思维设计程序。

但有没有什么方法或工具能优化其开发体验?以及有没有优秀的 Go Web 程序设计模式可以参考下?

10425 次点击
所在节点    Go 编程语言
101 条回复
zoharSoul
2021-12-14 10:48:20 +08:00
你都用 go 了, 就别讲究优雅了.
干就完事了
zoharSoul
2021-12-14 10:49:09 +08:00
@bghtyu #6
用过 Java 其实觉得 Go 更啰嗦……

毕竟特性 less, 代码 more
linshenqi
2021-12-14 10:51:39 +08:00
我们自研框架
eurry
2021-12-14 11:07:11 +08:00
用 Go 写了几个项目觉得体验不太好,适合写一些小工具,业务逻辑复杂的就算了太痛苦
qq976739120
2021-12-14 11:08:09 +08:00
用 go 写..真的就是刀耕火种
stach
2021-12-14 11:10:24 +08:00
go 开发 web 项目是无法和 php 比优雅的,放弃吧兄弟。
lasuar
2021-12-14 11:33:13 +08:00
标准项目中 req & rsp 必须要单独定义,如果一定要复用 struct ,可以通过匿名字段。rpc 项目中是没法复用的。
hwef
2021-12-14 12:04:23 +08:00
baozijun
2021-12-14 12:07:01 +08:00
@cxsz #16 啰嗦是啰嗦了,但是也降低了心智负担...
zjsxwc
2021-12-14 12:08:00 +08:00
不是你的错觉,而是不管什么语言过来的,
用 Go 都会觉得啰嗦
dallaslu
2021-12-14 12:17:22 +08:00
Go 输出 JSON 的大小写问题没有劝退你吗
Joker123456789
2021-12-14 12:18:16 +08:00
很好奇,php 如果要返回 json ,不需要实体吗? 将参数传给 service 不需要先封装到实体里面吗?

如果你在 php 里用的是 map ,那当我没说。
ZeroDu
2021-12-14 13:26:13 +08:00
接口的返回、请求参数。对应的实体是应该分开的。不然瞎写谁受得了。还是说只接 req 里面 getParm 连封装都没有吗?
ccppgo
2021-12-14 13:58:44 +08:00
@Joker123456789 php 叫数组, 不是 map, 面向数组编程
LoNeFong
2021-12-14 14:07:23 +08:00
只要一提语言你们就争论个不停, 有趣
SleipniR
2021-12-14 14:21:24 +08:00
先试试用 c 写,就不会觉得 go 啰嗦了。。
Yoock
2021-12-14 14:26:29 +08:00
自己封装一下,或者等我出一个最佳实践 (doge
brader
2021-12-14 14:32:21 +08:00
@Joker123456789 不需要,PHP 这点还是非常牛的,比如:`echo json_encode($array)`,我们根本不关心$array 里面有哪些字段,要不要预定义。
Joker123456789
2021-12-14 14:49:46 +08:00
@brader 这种写法 任何语言都支持,go 可以用 map ,java 也可以,c#也可以。 只是维护起来 要把人搞死,所以没人用。

相反,你在 php 里用实体 也是可以的,只是 php 基本上面向快速建站,所以很多为了后期维护而存在的规范,在 php 里都基本上不被重视。
brader
2021-12-14 15:06:03 +08:00
@Joker123456789 不同的,PHP 也可以显式赋值定义出另一个数组来,但是和你说的其他语言的代码写法,你写一个比对就知道了,即使 PHP 显式赋值出来,代码的简洁性还是比其他语言好

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/821961

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX