V2EX rower 的所有回复 第 1 页 / 共 2 页
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX    rower    全部回复第 1 页 / 共 2 页
回复总数  36
1  2  
tg 上创建个自己的群,随便传,不开会员单个文件最大 4G 。
不过 tg 的账号有被封的风险,另外都 TB 了,梯子流量也挺贵。
这个 DMCA 好,一下把所有的收集了,不用一个个找了,现在就找 fork 的
2025 年 5 月 28 日
回复了 Betsy 创建的主题 Go 编程语言 关于 GO 语言字母与数字交叉打印的问题
我建议谷歌搜下标题,或者问 AI ,这个是常见的问题,有答案的
span class="fade">2025 年 5 月 28 日
回复了 Betsy 创建的主题 Go 编程语言 关于 GO 语言字母与数字交叉打印的问题
我建议先看看正确的答案怎么写的
2025 年 4 月 16 日
回复了 gotOwt 创建的主题 GitHub 有感而发,把照片都存在 github 可行吗?
tg 建个群随便存,
2025 年 3 月 21 日
回复了 hello267015 创建的主题 分享发现 https://www.openai.fm/ 今天的乐子
这个帖子好,给我顶上去
2025 年 3 月 19 日
回复了 bushnerd 创建的主题 问与答 deepseek 开源的目的是什么?
我提供一种网络上的说法,大家都知道幻方是做量化的,之前被罚过,官方敲打量化交易对社会没有贡献,所以后面幻方给大学捐钱,什么贫困地区捐钱等等。接着就是开源了
不如这个
https://github.com/JOYCEQL/magic-resume
作者也在 V 站推广过,开源,界面也不错
至于 AI 这种,我直接问 deepseek 效果就非常好
1.有处理错误的中间件,有处理 panic 的中间件,这两个是不一样的

2.这里是错误类型,我们走处理错误的中间件

3.你想返回的 http 状态码是 500 ,同时错误信息是 db no ....

却被 401 处理了

对于这种情况是创建自定义错误类型,参考

https://github.com/ardanlabs/service6-video/tree/main/app/api/errs

```
// Error represents an error in the system.
type Error struct {
Code ErrCode `json:"code"`
Message string `json:"message"`
}
```

这里的 message 就是我们的错误信息`db no ...`

这里的 code 是我们内部错误的编码,比如说授权错误,code = 1 ,数据库错误,code = 2

参考 code 设计

https://github.com/ardanlabs/service6-video/blob/main/app/api/errs/codes.go

4.如何将 不同的错误转换为对应的 http 状态码,需要建立 code 和 http 状态码的 map 关系

参考

https://github.com/ardanlabs/service6-video/blob/main/api/http/api/mid/errors.go

5.错误中间件处理错误

这里处理错误时,如果是我们自定义的错误,就将 code 转换为对应的 http 状态码,错误信息不变。

如果不是自定义错误,表明是未知错误,返回 {500,unknow err}

参考 https://github.com/ardanlabs/service6-video/blob/main/app/api/mid/errors.go

```
func Errors(ctx context.Context, log *logger.Logger, handler Handler) error {
err := handler(ctx)
if err == nil {
return nil
}

log.Error(ctx, "message", "ERROR", err.Error())

// 这里判断是不是自定义错误
if errs.IsError(err) {
return errs.GetError(err)
}

return errs.Newf(errs.Unknown, errs.Unknown.String())
}
```
2024 年 12 月 10 日
回复了 aababc 创建的主题 程序员 golang 中 error 如何影响 log 和 api 状态
第二点,就是首先需要有自己的自定义错误类型,参考
https://github.com/ardanlabs/service6-video/tree/main/app/api/errs
然后每种错误对应的 http 状态码
参考
https://github.com/ardanlabs/service6-video/blob/main/api/http/api/mid/errors.go
的 init() 函数

最后在 Error 的中间件中对错误进行判断,如果是自定义错误,返回错误和对应的状态码,如果不是,返回 500
2024 年 12 月 10 日
回复了 aababc 创建的主题 程序员 golang 中 error 如何影响 log 和 api 状态
第一个对于 web 的错误,比较好的做法是创建一个 Error 的中间件统一处理,在 gin 中,我的用法如下

func CreateUser(mobile string) (*User) {
exists, err := mobileExists(mobile)
if err != nil {
// 这个 c 是 gin 的 context ,一般 mobile 这个请求参数是从 c 获得的,这里忽略那些细节,记录错误就是 c.Error()
c.Error(err)
return nil
}
if exists {
c.Error(err)
return nil
}
// ...
}
// 中间件处理错误
func Error(log *logger.Logger) gin.HandlerFunc {
return func(c *gin.Context) {

ctx := c.Request.Context()


if len(c.Errors) > 0 {
// 处理第一个错误
// 在 gin 中,错误是一个数组,这里只处理第一个错误,一般来说我们在程序中遇到错误时,只会返回一个错误
// 如果出现了例外情况,那么我们需要修改这里的代码
err := c.Errors[0].Err
// 记录错误
log.Error(ctx, "message", "ERROR", err.Error())
}


}
2024 年 1 月 17 日
回复了 Hmmmmmmm 创建的主题 生活 求推荐,买箱酒孝敬老爹
先搞清楚你爸喜欢什么口味的酒,有酱香酒,茅台之类的,有浓香型的酒,五粮液,剑南春,海之蓝,有清香型的,青花汾 20 。选的味不对,再贵也没用。
2024 年 1 月 13 日
回复了 yinwenjian 创建的主题 生活 关于为什么总觉得时间过的飞快
有点东西,兄弟
@harry890829 ok ,这个我知道了,源码在新的镜像中,便于分发
@morenacl 没毛病
@forvvvv123 有些道理
@rsy
好的,这两个感觉可以
@forvvvv123
@terrysnake
@hokori
mac 的话感觉是不是一些软件不兼容
2022 年 9 月 16 日
回复了 aw2350 创建的主题 问与答 十月准备出去面后端了,求面经
github 搜索:go interview 或者 go 面试
2022 年 8 月 25 日
回复了 rower 创建的主题 问与答 国外网站买了一个课,怎么支付,求救
1  2  
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2242 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 31ms UTC 04:16 PVG 12:16 LAX 20:16 JFK 23:16
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86