
如下代码
func Open() (*ent.Client, error) { dsn := fmt.Sprintf("%s:%s@tcp(%s)/ncepu", Option.Username, Option.Password, Option.Address) client, err := ent.Open("mysql", dsn) if err != nil { return nil, err } defer func(client *ent.Client) { err := client.Close() if err != nil { log.Fatal(err) } }(client) return client, nil } func ExistClientID(clientID string) (bool, error) { client, err := mysql.Open() if err != nil { return false, err } return client.Authorization.Query().Where(authorization.ClientID(clientID)).Exist(context.Background()) } func PasswordAuthorizationHandler(ctx context.Context, clientID, username, password string) (userID string, err error) { exist, e := service.ExistClientID(clientID) if e != nil { err = e return } if !exist { err = errors.ErrInvalidClient return } uid, e := service.Authorization(ctx, username, password) if e != nil { err = e return } return uid, nil } 1 anonymous2351d00 OP 看帖子格式时候又看了一遍代码,好多 nil 没有处理,我好难受 |
2 anonymous2351d00 OP 大家看的时候就看个格式吧,别细究业务了,想知道这种 err 和 nil 怎么处理好看 |
3 14v45mJPBYJW8dT7 2023 年 3 月 6 日 Open 获取 Client 后还能使用吗,defer 里不是 Close 了,我都是在 ExistClientID 中 defer client.close ,错误一般不关心 |
4 webcape233 2023 年 3 月 6 日 via iPhone 这个 err 不会外传,难道 ide 没报错?应该 return "" err , 前面那两个可以将 err 写在第一个=语句后用分号分隔 |
5 dobelee 2023 年 3 月 6 日 via iPhone 打开的方法里怎么还关闭了? |
6 none 2023 年 3 月 6 日 Open 里打开的 client 在返回之前 close 了,外面根本用不了 |
7 lessMonologue 2023 年 3 月 7 日 最内层只负责返回数据或者 error ,调用者自行处理错误(打印日志...)。 |
8 anonymous2351d00 OP |
9 anonymous2351d00 OP @webcape233 还没有试过,理解着是函数后面返回值也可以用?给他们赋值 return 中断函数外面就能收到值了? |