V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
ZGLHHH
V2EX  ›  Go 编程语言

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

  •  
  •   ZGLHHH · 2021-12-13 20:23:16 +08:00 · 10326 次点击
    这是一个创建于 1103 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

    101 条回复    2021-12-27 10:10:46 +08:00
    1  2  
    rekulas
        1
    rekulas  
       2021-12-13 20:58:16 +08:00
    这样才够规范,强类型语言确实会预定义很多类型,写的时候感觉麻烦点但是可读性可维护性都优于 php python 的万能结构,我也是写 php 转的,不过之前也写过 c Java ,在编译语言中对比起来感觉 go 真的足够简洁了,你应该转变下自己的思维,不能想同时要 go 的强大和 php 的灵活
    另外你说的近乎一样的机构体不清楚你是怎么规划的,如果遇到接近的我一般倾向于复用,最好能展示下示例代码
    liuxu
        2
    liuxu  
       2021-12-13 21:08:16 +08:00
    其实你可以用强类型写 php 适应一下再去写 go /doge
    weirdo
        3
    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
        4
    JohnH  
       2021-12-13 21:19:17 +08:00
    那就试试 goframe
    rccoder
        5
    rccoder  
       2021-12-13 21:26:00 +08:00
    试试 copilot 这个 vscode 插件
    bghtyu
        6
    bghtyu  
       2021-12-13 21:46:12 +08:00 via Android   ❤️ 2
    可以试试 Java ,再用 go ,就不觉得啰嗦了 /doge
    xarthur
        7
    xarthur  
       2021-12-13 21:47:28 +08:00 via iPhone   ❤️ 13
    @bghtyu 用过 Java 其实觉得 Go 更啰嗦……
    gidot
        8
    gidot  
       2021-12-13 21:53:22 +08:00   ❤️ 1
    @xarthur 用 Java 的思维写 PHP 一样更啰嗦,这种代码我见过……
    FrankFang128
        9
    FrankFang128  
       2021-12-13 21:54:54 +08:00
    看我的 go 直播咯,周一到周五每晚十点: http://live.bilibili.com/8989585
    imkerberos
        10
    imkerberos  
       2021-12-13 22:18:11 +08:00   ❤️ 1
    用 go 写一个 exec 函数调用 .NetCore 写的服务.
    chaodada
        11
    chaodada  
       2021-12-13 22:20:52 +08:00
    习惯就好了 ,我最近在拿 Laravel 的程序改到 go 。很爽啊
    chaodada
        12
    chaodada  
       2021-12-13 22:21:22 +08:00
    写习惯了之后 在写 php 感觉都变规范了 哈哈哈哈
    kwanzaa
        13
    kwanzaa  
       2021-12-13 23:02:46 +08:00
    听着就很有问题,怎么写这么多 struct 。
    Buges
        14
    Buges  
       2021-12-13 23:08:33 +08:00 via Android
    @imkerberos dotnet+f#确实还挺优雅,可惜是二等公民。
    Kylin30
        15
    Kylin30  
       2021-12-14 00:25:38 +08:00   ❤️ 5
    换成 C#
    cxsz
        16
    cxsz  
       2021-12-14 00:43:22 +08:00
    Java 也很啰嗦,每层分开,controller ,service ,dao ,mapper ,然后每个响应接收再建一个类来处理,复杂返回的还要多个整合一下,也是写一堆重复的
    yazinnnn
        17
    yazinnnn  
       2021-12-14 08:53:20 +08:00
    优雅同熟悉正交。

    —Rich Hickey

    go 怎么看也不像是一个能优雅起来的语言
    alexkkaa
        18
    alexkkaa  
       2021-12-14 09:17:41 +08:00 via Android
    输入优雅就不要用静态语言。不过 c#也慢慢越来越像动态语言了
    WytheHuang
        19
    WytheHuang  
       2021-12-14 09:26:32 +08:00
    慢慢习惯吧
    abigeater
        20
    abigeater  
       2021-12-14 09:29:28 +08:00
    同 PHP 用 Gin 写有一样的感觉 (然后就想自己封装 但对 Go 还不太熟练有些地方串不起来
    打算用 go-zero 试写一下
    zoharSoul
        21
    zoharSoul  
       2021-12-14 10:48:20 +08:00
    你都用 go 了, 就别讲究优雅了.
    干就完事了
    zoharSoul
        22
    zoharSoul  
       2021-12-14 10:49:09 +08:00
    @bghtyu #6
    用过 Java 其实觉得 Go 更啰嗦……

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

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

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


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

    数据库是这样的:

    id name
    1 zhangsan
    2 lisi
    3 wangwu


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

    你写一个,我也写一个,我用 map ,你用你引以为傲的 php ,最后对比下 差异有多大,可以吗???
    lizuoqiang
        61
    lizuoqiang  
       2021-12-14 17:30:24 +08:00
    @Joker123456789
    $input = file_get_contents('https://tool.bitefu.net/jiari/?d=2021-12-14&info=1');
    $arr = json_decode($input, true);
    echo json_encode($arr, 256);
    $input 可以是任何 io 资源的返回 你看的明白不?
    Joker123456789
        62
    Joker123456789  
       2021-12-14 17:33:31 +08:00
    真是重复啰嗦,先解码成 json ,再转成 json 字符串。

    你看看 java 怎么做的。

    Map input = selectOne();
    return JSONUtil.toJSONString(input);


    而且你的这个例子 并没有 展现出,你刚才说的那种语法
    Joker123456789
        63
    Joker123456789  
       2021-12-14 17:34:55 +08:00
    @lizuoqiang 还有,麻烦你 把我的帖子全部看完整,我一直都是在 跟另一个人说话,告诉他 语言之间没有什么大的差异,基本上都能做到。

    是你一直在跟我杠,非要说 php 简单吧??

    我是真的 明白了,为什么会有 “php 是世界上最好的语言” 这句调侃了
    Joker123456789
        64
    Joker123456789  
       2021-12-14 17:36:27 +08:00
    @lizuoqiang 还有,任意 IO 资源,java 不可以吗? 还重点说明一下。真是服了。
    lizuoqiang
        65
    lizuoqiang  
       2021-12-14 17:38:28 +08:00
    @Joker123456789
    杠精你好
    这个就是查库返回 json
    $data = Content::query()->select(['id', 'title'])->limit(3)->get();
    echo json_encode($data, JSON_UNESCAPED_UNICODE);
    lizuoqiang
        66
    lizuoqiang  
       2021-12-14 17:39:52 +08:00
    @Joker123456789
    不会写 php 就别出来瞎 bb 好吗?
    php 也不是世界上最好的语言
    但是在开发 web 效率上来说是最高的
    lizuoqiang
        67
    lizuoqiang  
       2021-12-14 17:42:03 +08:00
    @Joker123456789
    建议你先学习下 php
    别动不动会写个 echo 你就可以来指点江山了
    Joker123456789
        68
    Joker123456789  
       2021-12-14 17:42:33 +08:00
    不就是一个 sql 吗??

    Map data = selectOne("select id, title limit 3")
    JSONUtil.toJSONString(input);

    我是用 sql 写的,代码量就跟你不相上下了,甚至还少一些。

    java 也有框架可以实现这种写法,我只是懒得去给你找了。
    Joker123456789
        69
    Joker123456789  
       2021-12-14 17:43:52 +08:00
    @lizuoqiang 我们一直在比较 代码量 的差异,方便性把?? 跟我会不会 php 有什么关系??

    我能用跟你差不多的代码量 实现跟你一样的 效果,不就可以证明 我的观点了??

    非要会 php 干嘛???

    你这逻辑有点感人啊
    lizuoqiang
        70
    lizuoqiang  
       2021-12-14 17:44:26 +08:00
    @Joker123456789 请不要跑题,
    这个主题是 go 和 php ,
    你还会 java 啊,真 tm 厉害!
    Joker123456789
        71
    Joker123456789  
       2021-12-14 17:45:37 +08:00
    @lizuoqiang 别说服不了我,就气急败坏的骂人。 不想争论可以滚蛋,别来网上撒泼。
    Joker123456789
        72
    Joker123456789  
       2021-12-14 17:47:36 +08:00
    @lizuoqiang

    你说 go ??

    data := selectOne("select id, title limit 3")。

    json.Marshal(data)

    告诉我几行代码??
    Joker123456789
        73
    Joker123456789  
       2021-12-14 17:50:35 +08:00
    @lizuoqiang

    我无意贬低 php ,我一直都是在说 语言的差异不大, 你突然冒出来 非要说服我 php 简单,但是又拿不出什么杀手锏。

    说不过我,就气急败坏的骂人,我也是醉了。 您自便把
    lizuoqiang
        74
    lizuoqiang  
       2021-12-14 17:50:48 +08:00
    @Joker123456789
    别把无知当做自以为是。
    都怪这该死的 php ,开发太快了。让我还有时间在这和你争论~
    Joker123456789
        75
    Joker123456789  
       2021-12-14 17:53:00 +08:00
    @lizuoqiang 说不过我可以闭嘴,有本事拿出杀手锏。 拿不出来就闭嘴。

    靠骂人 来 争面子,只会让你更丢人
    monkeyWie
        76
    monkeyWie  
       2021-12-14 17:53:16 +08:00   ❤️ 1
    有一说一我没用过 php ,感觉 php 就这个箭头符合敲代码效率就慢了一半
    Rache1
        77
    Rache1  
       2021-12-14 18:02:24 +08:00
    @lizuoqiang 这里你可以 get() 后直接 toJson(JSON_UNESCAPED_UNICODE) 😆
    TypeError
        78
    TypeError  
       2021-12-14 18:09:29 +08:00
    python 转 go ,多写几个 struct 倒不是痛点,很多可以生成
    企业微服务开发,grpc+grpc-gateway 反而很爽,http 请求响应也用 protobuf 约束上了,减少字段类型之类的错误、自动生成 swagger 接口文档

    个人项目继续用 python ,语法舒服
    yrj
        79
    yrj  
       2021-12-14 18:25:13 +08:00 via iPad
    没太理解,一样的结构体不是可以复用嘛,为什么要定义三个,如果有细微不同,可以继承一下呀
    janxin
        80
    janxin  
       2021-12-14 18:35:34 +08:00
    @yrj Single-Responsibility Principle 的一种实践吧
    james122333
        81
    james122333  
       2021-12-14 19:01:02 +08:00
    @Joker123456789

    php 数组很方便没错

    $a = [
    "abc" => 123,
    "bcd" => [
    "a", "b", "c"
    ],
    "cde" => [
    abc:class => 123
    ]
    ];

    优点写的快结构清晰还可以无脑当设定使用
    然后查一下
    https://stackoverflow.com/questions/9803317/multilevel-associative-array-in-java-like-php
    james122333
        82
    james122333  
       2021-12-14 19:02:02 +08:00
    果然我不太会发程序码
    james122333
        83
    james122333  
       2021-12-14 19:08:19 +08:00
    abc::class
    wonderfulcxm
        84
    wonderfulcxm  
       2021-12-14 19:15:42 +08:00 via iPhone
    该来的还是来了,楼上几位已经吵起来了,热度不减当年,我就说 PHP 是最好的语言,谁支持,谁反对?
    sciel
        85
    sciel  
       2021-12-14 19:22:22 +08:00
    goframe ,用了就停不下来了。 https://goframe.org/display/gf
    wonderfulcxm
        86
    wonderfulcxm  
       2021-12-14 19:24:20 +08:00 via iPhone
    很多人不知道为什么 PHP 变量要用$前缀,这个跟 Perl 的语法,还有 nginx 配置语言也使用了同样的方法,在 perl 这种技术叫“变量插值”,它让专门的字符串拼接运算符变得不那么必要。比如 echo "foo:$foo"
    james122333
        87
    james122333  
       2021-12-14 21:05:12 +08:00
    楼上说的很好 这种方式也可以应用至数组 动态就是带入变量或者可以在数组里写三元运算 而三元运算也可以取用变量 输出可以数字 字串 数组
    james122333
        88
    james122333  
       2021-12-14 21:10:00 +08:00
    布林值或物件 blahblahblah. 可惜 key 有限制
    james122333
        89
    james122333  
       2021-12-14 21:14:50 +08:00
    可以不用写十几二十行以上就为了凑个输出结构 或者写一堆类再来序列化 整天映射来映射去还不能很确定结果 完全就是 996 帮凶
    JosephHan
        90
    JosephHan  
       2021-12-15 05:52:21 +08:00
    Laravel 转 Go 强烈推荐用 GoFrame, 这个框架可以看做是用 Go 写的 Laravel, 除了要适应 Go 的语法, 转换过去几乎没有啥痛苦

    官网地址: https://goframe.org/display/gf
    Macolor21
        91
    Macolor21  
       2021-12-15 09:08:58 +08:00 via iPhone
    @cxsz 你试一下全部写在一个文件里,业务写复杂点

    如基本的参数校验:限制字符串长度,数字限制在 1-10 写多点

    service 层写点校验逻辑,如判断缓存在不在,或者布隆过滤器用来判断是否需要查库,过滤无效请求。
    然后业务上,写多几个请求,如 A 依赖 b ,c ,d 的结果然后才能执行,所有 bcd 都用异步去做

    最后到了 dao 层,需要做分布式事务,原子写入多个表。


    这些写完之后,你看看你的代码还能不能迭代?
    fregie
        92
    fregie  
       2021-12-15 10:04:36 +08:00
    不建议用 go 写业务,开发效率慢,也发挥不出 go 的优势
    Akiya
        93
    Akiya  
       2021-12-15 12:06:00 +08:00
    当然是换 C#啦
    securityCoding
        94
    securityCoding  
       2021-12-15 14:51:45 +08:00
    多看看各种中间件的源码就知道 go 的源码有多好读了,没那么多花活。
    java 的开源项目看源码能把你整吐
    FightPig
        95
    FightPig  
       2021-12-15 15:31:56 +08:00
    这怎么还争起来了,好吧,我用最多还是 rails ,直接 render json: User.all ,go 我也写,啰嗦些,不过直接按 rails 写了个生成工具,几乎前端 后端都是我用代码生成的,感觉还好,编译成一个包,直接丢服务器上就能用,给客户演示也不用担心源码问题。语言嘛,各有各的优点,哪个方便用哪个呗。话说我挺想用 rust 的,奈何学了好几回了,都没用到生产上。
    sanggao
        96
    sanggao  
       2021-12-15 16:22:08 +08:00
    用 go 代替 php 写业务,就是自找不痛快
    elevioux
        97
    elevioux  
       2021-12-15 16:22:51 +08:00
    又吵了起来,php 果然是最好的语言。

    其实 php 也可以写的很严格,很规范,特别是 8.0 之后。但这样代码量又多了不少,对于不少 php 开发来说都是多一事不如少一事,直接干就好。

    例如楼上的返回 json ,可以 直接 echo json_encode(db_select(...)),也可以严格的先定义一个实现__toString 方法的类后直接 echo new 类(...)。

    实际第二种我在工作中没见过,毕竟都懒。
    JaguarJack
        98
    JaguarJack  
       2021-12-16 16:57:16 +08:00
    别想不开用 Go 开发 Web 了!纯粹没事找事做,早点做完早下班。

    PHP 也是以前的 PHP 了,性能完全可以满足 Web
    349865361
        99
    349865361  
       2021-12-18 11:03:26 +08:00
    @JosephHan 别发广告了。。。受不了 这种广告越多越没人用
    JosephHan
        100
    JosephHan  
       2021-12-18 13:07:04 +08:00
    @349865361 #99 我本职就是干了 14 年的 php 开发,Laravel 用了 5 年, 原有的 Laravel 项目转用 go 重构时, 调研了好久选中了这个框架, 用过后觉得这个框架适合 Laravel 转, 推荐给其他 phper, 怎么就变成广告了?

    当初调研了好久, gin 这类的比较像 http server 框架而不是 laravel 这种全功能的框架.
    beego 的给我的感觉更像 thinkphp.
    GoFrame 框架功能齐全, 本身又不重,用起来的感觉最接近 Laravel
    将自己实践出来的经验告诉给同行, 怎么就被说成是广告了呢?

    你本身是用过踩过坑? 还是因为我推荐的内容不符合你的预期?
    你认别人推荐的不对可以讲经验,列数据来反驳,但不应该上来就扣帽子.
    怎么跟某乎里的套路一样, 上来什么也不说,第一件事就是给别人定性?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2810 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 09:40 · PVG 17:40 · LAX 01:40 · JFK 04:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.