V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  rower  ›  全部回复第 1 页 / 共 2 页
回复总数  34
1  2  
154 天前
回复了 Betsy 创建的主题 Go 编程语言 关于 GO 语言字母与数字交叉打印的问题
我建议谷歌搜下标题,或者问 AI ,这个是常见的问题,有答案的
155 天前
回复了 Betsy 创建的主题 Go 编程语言 关于 GO 语言字母与数字交叉打印的问题
我建议先看看正确的答案怎么写的
196 天前
回复了 tog 创建的主题 GitHub 有感而发,把照片都存在 github 可行吗?
tg 建个群随便存,
222 天前
回复了 hello267015 创建的主题 分享发现 https://www.openai.fm/ 今天的乐子
这个帖子好,给我顶上去
224 天前
回复了 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())
}
```
323 天前
回复了 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
323 天前
回复了 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-01-17 09:45:03 +08:00
回复了 Hmmmmmmm 创建的主题 生活 求推荐,买箱酒孝敬老爹
先搞清楚你爸喜欢什么口味的酒,有酱香酒,茅台之类的,有浓香型的酒,五粮液,剑南春,海之蓝,有清香型的,青花汾 20 。选的味不对,再贵也没用。
2024-01-13 22:20:48 +08:00
回复了 yinwenjian 创建的主题 生活 关于为什么总觉得时间过的飞快
有点东西,兄弟
@harry890829 ok ,这个我知道了,源码在新的镜像中,便于分发
@morenacl 没毛病
2023-11-21 10:06:27 +08:00
回复了 rower 创建的主题 开源软件 我发现谷歌,微软, FB 等这些大公司是不用一些开源软件的
@forvvvv123 有些道理
@rsy
好的,这两个感觉可以
@forvvvv123
@terrysnake
@hokori
mac 的话感觉是不是一些软件不兼容
2022-09-16 16:43:48 +08:00
回复了 aw2350 创建的主题 问与答 十月准备出去面后端了,求面经
github 搜索:go interview 或者 go 面试
2022-08-25 17:20:22 +08:00
回复了 rower 创建的主题 问与答 国外网站买了一个课,怎么支付,求救
2022-07-12 16:24:47 +08:00
回复了 unt 创建的主题 问与答 请问 tg 上有哪些安全风险,我是 macos+ios
纸飞机情报系统
https://2047.one/t/17419
2022-06-30 11:17:37 +08:00
回复了 rower 创建的主题 问与答 mysql 事务的处理,想问下这种情况下需要使用事务吗
@yuancoder
@hidemyself
为啥呢
1  2  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   5377 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 31ms · UTC 06:01 · PVG 14:01 · LAX 23:01 · JFK 02:01
♥ Do have faith in what you're doing.