登录
首页 >  Golang >  Go问答

Golang 中无法返回值

来源:stackoverflow

时间:2024-04-05 14:09:30 182浏览 收藏

在Golang实战开发的过程中,我们经常会遇到一些这样那样的问题,然后要卡好半天,等问题解决了才发现原来一些细节知识点还是没有掌握好。今天golang学习网就整理分享《Golang 中无法返回值》,聊聊,希望可以帮助到正在努力赚钱的你。

问题内容

我是 golang 新手,我不明白为什么我不能返回值。我认为这是一个小错误。我只想返回我在数据库中选择的字符串。

func myFunction() string {

    rows, err := db.Query("SELECT my_string ORDER BY agents_count ASC LIMIT 1;")
    if err != nil {
        logger.Fatal(err)
    }

    defer rows.Close()

    for rows.Next() {
        var my_string string

        if err := rows.Scan(&my_string); err != nil {
            logger.Fatal(err)
        }
        
        logger.Info("Result : ", my_string)
    }
    if err := rows.Err(); err != nil {
        logger.Fatal(err)
    }

    return my_string
}

有什么想法吗?我的错误是什么?


正确答案


当您选择单行时(使用 limit 1),您应该使用 QueryRow 方法或更新的 QueryRowContext 方法,而不是 Query

func myfunction() string {
    var my_string string
    
    row := db.queryrow("select my_string order by agents_count asc limit 1;")
    if err := row.scan(&my_string); err != nil {
        logger.fatal(err)
    }
    
    return my_string
}

只需将 my_string 移至外循环

func myFunction() string {

    rows, err := db.Query("SELECT my_string ORDER BY agents_count ASC LIMIT 1;")
    if err != nil {
        logger.Fatal(err)
    }

    defer rows.Close()

    var my_string string

    for rows.Next() {

        if err := rows.Scan(&my_string); err != nil {
            logger.Fatal(err)
        }
        
        logger.Info("Result : ", my_string)
    }
    if err := rows.Err(); err != nil {
        logger.Fatal(err)
    }

    return my_string
}

今天关于《Golang 中无法返回值》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

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