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.请大佬帮忙看看代码,优化优化