Intro
- 萌新刚刚开始写 golang
- 总觉得哪里怪怪的
如下代码
- 数据源
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 } - 检测 id 是否存在
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 } qeustion
- 1.这几段代码里的 error 会不会像我想的那样传递到最外层
- 2.Open()函数中的 defer 这样写很难受,但又不想在每一处都写 defer close
- 3.请大佬帮忙看看代码,优化优化
