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

10427 次点击
所在节点    Go 编程语言
101 条回复
Joker123456789
2021-12-14 15:14:35 +08:00
java:

public class Demo {
public int id;
public String name;
}

go:

type Demo struct {
id int,
name string
}


php:

class NewsMapper {
public $id=0;
public $name="";
}

请问 更方便在哪???

你说 php 更方便,应该是说的这种把?

$news=new NewsMapper();
$news->name=”xxx”;
$news->id=xxx;

但是这跟 map 有啥区别?

go:

news := make(map[string]string)
news["id"] = 0;
news["name"] = "xxx";

java, c# 我就不写了。。。 都差不多。
Chad0000
2021-12-14 15:16:02 +08:00
@imkerberos #10 没毛病,而且还可以继续对外声称使用 go 。
userforg2021
2021-12-14 15:37:29 +08:00
不考虑修改的话,C#可以使用匿名类型
var news = new
{
id = xxx,
name = "xxx",
};
mainjzb
2021-12-14 15:41:30 +08:00
大多数人根本没写过 C C++ rust 理解不了 go 的优雅。。
不过 error 确实 sb 写起来很啰嗦
Valid
2021-12-14 15:48:46 +08:00
语言的本质都一样,哪个开发效率高,哪个轮子多用哪个。
liuhuansir
2021-12-14 15:54:19 +08:00
@cxsz 这是 MVC 的规范吧,跟 Java 有啥关系?你直接在 servlet 里写 SQL 也能实现功能,Java 的啰嗦又不是指这方面
RainCats
2021-12-14 16:04:18 +08:00
@cxsz 这个跟语言似乎没有什么关系,只是一个规范,一个类走这几个层也没毛病
MidGap
2021-12-14 16:31:36 +08:00
Go 写原生 sql 就可以省一个结构体了(狗头
openp2p
2021-12-14 16:33:01 +08:00
众所周知,php 是全世界最好的语言。我好奇为啥楼主弃明投暗搞 go 呢?
pengtdyd
2021-12-14 16:34:24 +08:00
@openp2p +1 学 go 救不了中国人
yazinnnn
2021-12-14 16:46:53 +08:00
中国人学啥都没救
lizuoqiang
2021-12-14 17:02:01 +08:00
lizuoqiang
2021-12-14 17:02:47 +08:00
@Joker123456789
echo json_encode(['id' => 0, 'name' => "xxx"]);
rophie123
2021-12-14 17:07:22 +08:00
说说我吧,之前写 php 的,有段时间混合 go ,后来纯 go ,现在能 php 就不会用其他的。重要的是做出来先不考虑多优雅,过度设计,挣到钱才是王道,btw 我不上班
Joker123456789
2021-12-14 17:10:51 +08:00
@lizuoqiang 这种方式,你打算怎么动态? 如果直接写死,其他语言也都可以


每个程序都有的字符串转实体的函数(`{"id":0, "name":"xxx"}`)
virgil1988
2021-12-14 17:12:54 +08:00
比 go 还啰嗦的语言确实不多,但是 go 的好处是没那么多花活儿所以比较好读。
lizuoqiang
2021-12-14 17:16:56 +08:00
@Joker123456789 我发现你是个杠精,不会 php 就别乱说。
echo json_encode(compact('id', 'name')); 变量动态了不?
Joker123456789
2021-12-14 17:21:20 +08:00
@lizuoqiang 你完整的写下来,我看看。 你最后发的这个例子,没有赋值的步骤。
Joker123456789
2021-12-14 17:24:27 +08:00
@lizuoqiang 还有,不要开口闭口就杠精,不想争论就别说话。 想争论 就好好争论。 你最后发的这个例子就是没头没尾。 连赋值都没了
Joker123456789
2021-12-14 17:26:15 +08:00
@lizuoqiang 简单点。

数据库是这样的:

id name
1 zhangsan
2 lisi
3 wangwu


你用你引以为傲的 php ,写个例子出来,把这个数据 查询到一个变量里,然后转成 json 返回给前端。

你写一个,我也写一个,我用 map ,你用你引以为傲的 php ,最后对比下 差异有多大,可以吗???

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

https://tanronggui.xyz/t/821961

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

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

© 2021 V2EX