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

说说我用 go 的感受,一个字

  •  
  •   thou95 · 2021-06-01 12:36:37 +08:00 · 7824 次点击
    这是一个创建于 1263 天前的主题,其中的信息可能已经有所发展或是发生改变。

    爽?

    平时摸鱼学了 go,觉得现有的摸鱼站用的不爽,干脆用 go 撸一个,也当练练手

    • web 框架选的 iris,路由直接到结构体方法,也有依赖注入,周边配套库简单易用
    • 数据库没有用 orm,选的 sqlx+go-sqlbuilder 配套组合,自己封装了下,用的非常顺手
    • 数据校验用的 gookit/validate,中文支持的不错
    • 爬虫开始用的 gocolly/colly,但是有些站点是 spa 架构,费事抓包扒源码看,后面改用了 mxschmitt/playwright-go,谁用谁知道
    • dom 解析用的 PuerkitoBio/goquery,用 jq 的写法来操作 dom
    • 当然少不了时间处理相关的库 jinzhu/now,这个可以很方便获取时间点
    • websocket 库是用的 iris 作者写的 kataras/neffo,他是对 gobwas 、gorilla 二次封装,加入了命名空间、事件的概念,也支持弹性扩展,主要是有配套的 web 客户端代码
    • 最后用的 spiral/endure 来整合各种服务之间的依赖关系,是真的好用,这个是在学习 spiral/roadrunner 代码时候发现的

    还有用到非常多好库 emirpasic/gods,o1egl/govatar,mojocn/base64Captcha...这里就不列举了

    go 部署也非常的方便,直接打包丢上服务器, 可惜 go 暂时还不支持泛型,不然写法上会更爽~

    厚颜无耻的邀请大家来玩玩: 好多鱼

    第 1 条附言  ·  2021-06-01 14:30:14 +08:00

    是软文,是软文,是软文,

    上面的是邀请页面,登录只是记录历史操作,鱼群聊天等等。

    不喜欢登录的,也不是强制必须登录,这里补充个入口不用登录,不用登录,不用登录 不用登录入口

    25 条回复    2021-06-15 17:15:48 +08:00
    labulaka521
        1
    labulaka521  
       2021-06-01 13:32:46 +08:00
    iris 作者人品很烂
    数据库 gorm 也不错 还有 ent
    karatsuba
        2
    karatsuba  
       2021-06-01 13:34:33 +08:00
    到底是邀请人上去看看还是不让人看
    lepig
        3
    lepig  
       2021-06-01 13:36:03 +08:00
    搞个登录 不是劝退嘛
    yunchuanwu
        4
    yunchuanwu  
       2021-06-01 13:51:01 +08:00
    登录劝退+1
    66beta
        5
    66beta  
       2021-06-01 14:03:10 +08:00
    原来是广告
    Jwyt
        6
    Jwyt  
       2021-06-01 14:08:29 +08:00
    广告就算了,做一个这种网站,python 不是更爽
    xieren58
        7
    xieren58  
       2021-06-01 14:09:58 +08:00   ❤️ 1
    广告就算了,做一个这种网站,rust 不是更爽?
    xingshu1990
        8
    xingshu1990  
       2021-06-01 14:10:13 +08:00
    @Jwyt #6 估计会嫌弃 DJANGO 臃肿
    Jwyt
        9
    Jwyt  
       2021-06-01 14:15:18 +08:00
    v2 上每隔一段时间就会有一个类似摸鱼网站、新闻聚合什么的项目,是没其他东西做了么
    thou95
        10
    thou95  
    OP
       2021-06-01 14:18:58 +08:00
    @labulaka521
    是 16 年的那个事情吗 https://github.com/avelino/awesome-go/pull/1135
    人也是会成长的,个人观点
    没少问题他问题,感觉上算是个很热情的人

    gorm,ent 之前项目用过,太笨重了,现在是 sqlx+go-sqlbuilder 组合再加上 https://dbschema.com 辅助
    usedname
        11
    usedname  
       2021-06-01 14:19:57 +08:00   ❤️ 2
    本来想看看广告咋样,结果看到登录,你自己玩吧 🐶
    surbomfla
        12
    surbomfla  
       2021-06-01 14:22:25 +08:00 via Android
    广告就算了,做一个这种网站,汇编 不是更爽?
    thou95
        13
    thou95  
    OP
       2021-06-01 14:26:16 +08:00
    @66beta
    @Jwyt
    @xieren58
    @surbomfla
    没说不是广告来的,欢迎使劲喷,
    如果不对请求站长帮我转移下节点~

    @lepig
    @yunchuanwu
    @usedname
    嘿嘿嘿,朋友再见~ 不登录也能摸鱼呀,那个只是邀请页面,再有了登录也只是为了提供有状态的功能,那么反感的么,另外一个贴有简单介绍玩法 https://v2ex.com/t/779836
    themostlazyman
        14
    themostlazyman  
       2021-06-01 14:51:02 +08:00
    直接顶部点 logo 就可以免登录
    napsterwu
        15
    napsterwu  
       2021-06-01 15:21:41 +08:00 via iPhone
    借楼问一下,err 地狱如何解决?这几天试用了一下感觉像 js 回调地狱一样
    thou95
        16
    thou95  
    OP
       2021-06-01 15:49:08 +08:00   ❤️ 1
    @napsterwu
    使用 panic,只要封装好基础代码,能避免 err 地狱问题,但是不是绝对不用 err,实际上有些业务情况是需要用到 err 判断的
    iris 会 recover 路由 handler 中的 panic,然后调用 OnErrorCode 钩子,其它框架应该也是相同思路

    所以在路由 handler 中执行业务逻辑,包括数据库相关操作,出现 err,直接 panic
    然后在 OnErrorCode 钩子处理不同 err,判断 rollback 或者 response 错误

    这只是简单举例,实际是要按项目情况决定如何封装基础代码
    labulaka521
        17
    labulaka521  
       2021-06-01 16:12:34 +08:00
    @thou95 感觉使用 panic 还是粗暴了点
    Goland 可以 输入 err.nn 生成 if err != nil {} ,然后 return 也会自动补全 return nil, err

    @napsterwu 我觉得还行😂
    我喜欢每个都检查一下错误的感觉
    yunyuyuan
        18
    yunyuyuan  
       2021-06-01 16:17:00 +08:00
    我写小网站首选 flask+DBUtil
    mekingname
        19
    mekingname  
       2021-06-01 16:19:28 +08:00
    @xingshu1990 说到 Python 难道你就只知道一个 Django ? fastapi 表示不服。
    ch3nOr
        20
    ch3nOr  
       2021-06-01 16:24:32 +08:00
    @thou95 panic 不是会生成完整的桢栈信息吗,好奇这样操作不会拖累性能?
    bazingaterry
        21
    bazingaterry  
       2021-06-01 16:27:47 +08:00   ❤️ 1
    觉得 Go 有「非常多好库」的话,为何不试试 Java (
    thou95
        22
    thou95  
    OP
       2021-06-01 16:49:22 +08:00
    @ch3nOr 目前上线几个商用项目都是这样操作,已经跑了快一年,暂时还没发现性能问题,或者是量没到,管他呢,怎么爽怎么来\捂脸,真逼到有性能问题也不愁没钱加配置,实在不行再慢慢优化
    xz410236056
        23
    xz410236056  
       2021-06-01 17:38:52 +08:00
    “可惜 go 暂时还不支持泛型,不然写法上会更爽~”
    空接口模拟也还行,我看说是 1.17 开始支持,1.18 正式推出
    xz410236056
        24
    xz410236056  
       2021-06-01 17:41:33 +08:00
    我也刚开始学 go,我更看好 gin,不知道楼主有没有对比过这些框架
    who1996
        25
    who1996  
       2021-06-15 17:15:48 +08:00
    @xz410236056 echo 目前更活跃,貌似也有不错的社区呼声
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5398 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 07:04 · PVG 15:04 · LAX 23:04 · JFK 02:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.