登录
首页 >  Golang >  Go问答

整理golang代码的结构和函数

来源:stackoverflow

时间:2024-02-06 08:57:13 153浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《整理golang代码的结构和函数》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

我在网上发现这段代码是一个挑战,显然设计有问题,它被认为是糟糕的设计。谁能告诉我这个问题以及你将如何重构它?

type User struct {
    Uuid      string
    FirstName string `db:"first_name"`
    LastName  string `db:"last_name"`
    Email     string
    Password  string
    Address   *Address
}

type Address struct {
    Uuid     string
    UserUuid uint `db:"user_uuid"`
    Address1 string
    Address2 string
    City     string
    Postcode string
}

func OrderBYAndGetAll(orderBy string) ([]User, error) {
    db, _ := sqlx.Connect("postgres", "user=prod password=prodPass741 dbname=acme sslmode=disable")
    getUsersQuery := "SELECT * FROM users"
    // Add the order by if it has been passed though
    if orderBy != "" {
        getUsersQuery += " ORDER BY " + orderBy + " ASC"
    }
    users := []User{}
    db.Select(&users, getUsersQuery)
    // Find the address for each user
    for _, user := range users {
        db.Select(&user.Address, "select * from addresses where user_uuid = "+user.Uuid)
    }
    return users, nil
}

func GetAllUsers() ([]User, error) {
    // db, _ := sqlx.Connect("postgres", "user=dev password=password dbname=acme sslmode=disable")
    //  getUsersQuery := "SELECT * FROM users"
    //  users := []User{}
    //  db.Select(&users, getUsersQuery)
    db, _ := sqlx.Connect("postgres", "user=prod password=prodPass741 dbname=acme sslmode=disable")
    getUsersQuery := "SELECT * FROM users"
    users := []User{}
    db.Select(&users, getUsersQuery)
    // Find the address for each user
    for _, user := range users {
        err := db.Select(&user.Address, "select * from addresses where user_uuid = "+user.Uuid)
    }
    return users, nil
}

正确答案


试试这个。我从未尝试过 sqlx,但此代码旨在可扩展、可重用和减少资源消耗。

739995578​​675

本篇关于《整理golang代码的结构和函数》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于Golang的相关知识,请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>