应该如何使用 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 程序设计模式可以参考下?

9874 次点击
所在节点    Go 编程语言
101 条回复
rekulas
2021-12-13 20:58:16 +08:00
这样才够规范,强类型语言确实会预定义很多类型,写的时候感觉麻烦点但是可读性可维护性都优于 php python 的万能结构,我也是写 php 转的,不过之前也写过 c Java ,在编译语言中对比起来感觉 go 真的足够简洁了,你应该转变下自己的思维,不能想同时要 go 的强大和 php 的灵活
另外你说的近乎一样的机构体不清楚你是怎么规划的,如果遇到接近的我一般倾向于复用,最好能展示下示例代码
liuxu
2021-12-13 21:08:16 +08:00
其实你可以用强类型写 php 适应一下再去写 go /doge
weirdo
2021-12-13 21:19:15 +08:00
gin 请求用的结构体 可以对应一下 laravel 里的 各种 request 类 里的 验证
gin 响应用的结构体 可以对应一下 laravel 里的 各种 api resource
gorm 用的结构体 就可以当成 laravel 里限定了 hidden / fillable 的 eloquent model

laravel 写严格点的话,个人感觉和 gin 没啥大的区别
JohnH
2021-12-13 21:19:17 +08:00
那就试试 goframe
rccoder
2021-12-13 21:26:00 +08:00
试试 copilot 这个 vscode 插件
bghtyu
2021-12-13 21:46:12 +08:00
可以试试 Java ,再用 go ,就不觉得啰嗦了 /doge
xarthur
2021-12-13 21:47:28 +08:00
@bghtyu 用过 Java 其实觉得 Go 更啰嗦……
gidot
2021-12-13 21:53:22 +08:00
@xarthur 用 Java 的思维写 PHP 一样更啰嗦,这种代码我见过……
FrankFang128
2021-12-13 21:54:54 +08:00
看我的 go 直播咯,周一到周五每晚十点: http://live.bilibili.com/8989585
imkerberos
2021-12-13 22:18:11 +08:00
用 go 写一个 exec 函数调用 .NetCore 写的服务.
chaodada
2021-12-13 22:20:52 +08:00
习惯就好了 ,我最近在拿 Laravel 的程序改到 go 。很爽啊
chaodada
2021-12-13 22:21:22 +08:00
写习惯了之后 在写 php 感觉都变规范了 哈哈哈哈
kwanzaa
2021-12-13 23:02:46 +08:00
听着就很有问题,怎么写这么多 struct 。
Buges
2021-12-13 23:08:33 +08:00
@imkerberos dotnet+f#确实还挺优雅,可惜是二等公民。
Kylin30
2021-12-14 00:25:38 +08:00
换成 C#
cxsz
2021-12-14 00:43:22 +08:00
Java 也很啰嗦,每层分开,controller ,service ,dao ,mapper ,然后每个响应接收再建一个类来处理,复杂返回的还要多个整合一下,也是写一堆重复的
yazinnnn
2021-12-14 08:53:20 +08:00
优雅同熟悉正交。

—Rich Hickey

go 怎么看也不像是一个能优雅起来的语言
alexkkaa
2021-12-14 09:17:41 +08:00
输入优雅就不要用静态语言。不过 c#也慢慢越来越像动态语言了
WytheHuang
2021-12-14 09:26:32 +08:00
慢慢习惯吧
abigeater
2021-12-14 09:29:28 +08:00
同 PHP 用 Gin 写有一样的感觉 (然后就想自己封装 但对 Go 还不太熟练有些地方串不起来
打算用 go-zero 试写一下

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

https://www.v2ex.com/t/821961

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

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

© 2021 V2EX