V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  rower  ›  全部回复第 1 页 / 共 2 页
回复总数  34
1  2  
2025 年 5 月 28 日
回复了 Betsy 创建的主题 Go 编程语言 关于 GO 语言字母与数字交叉打印的问题
我建议谷歌搜下标题,或者问 AI ,这个是常见的问题,有答案的
2025 年 5 月 28 日
回复了 Betsy 创建的主题 Go 编程语言 关于 GO 语言字母与数字交叉打印的问题
我建议先看看正确的答案怎么写的
2025 年 4 月 16 日
回复了 tog 创建的主题 GitHub 有感而发,把照片都存在 github 可行吗?
tg 建个群随便存,
2025 年 3 月 21 日
回复了 hello267015 创建的主题 分享发现 https://www.openai.fm/ 今天的乐子
这个帖子好,给我顶上去
2025 年 3 月 19 日
回复了 bushnerd 创建的主题 问与答 deepseek 开源的目的是什么?
我提供一种网络上的说法,大家都知道幻方是做量化的,之前被罚过,官方敲打量化交易对社会没有贡献,所以后面幻方给大学捐钱,什么贫困地区捐钱等等。接着就是开源了
2025 年 3 月 19 日
回复了 johnwayne 创建的主题 分享创造 AI 重度参与完成了一款简历产品,找工作的看过来
不如这个
https://github.com/JOYCEQL/magic-resume
作者也在 V 站推广过,开源,界面也不错
至于 AI 这种,我直接问 deepseek 效果就非常好
2024 年 12 月 28 日
回复了 dzdh 创建的主题 Go 编程语言 go 没有异常 怎么判断逻辑以外的错误 全局的处理
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 Errors(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 创建的主题 问与答 国外网站买了一个课,怎么支付,求救
2022 年 7 月 12 日
回复了 unt 创建的主题 问与答 请问 tg 上有哪些安全风险,我是 macos+ios
纸飞机情报系统
https://2047.one/t/17419
2022 年 6 月 30 日
回复了 rower 创建的主题 问与答 mysql 事务的处理,想问下这种情况下需要使用事务吗
@yuancoder
@hidemyself
为啥呢
1  2  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2829 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 39ms · UTC 13:34 · PVG 21:34 · LAX 05:34 · JFK 08:34
♥ Do have faith in what you're doing.