登录
首页 >  Golang >  Go问答

从函数返回的正确方法是什么?

来源:stackoverflow

时间:2024-04-24 10:18:33 318浏览 收藏

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

问题内容

我很困惑如何从函数返回值。我正在尝试以下示例:

  • 将 false 传递给函数 a
  • c 的值在函数 a 中将为 false
  • 它将进行递归调用,这会将 c 的值从 false 更改为 true
  • 所以函数应该返回字符串“true”和 bool true,但它返回字符串“false”和 bool false

    package main
    
    import (
        "fmt"
    )
    
    func a(c bool) (string, bool) {
        if c {
            return "true", true
        }
        a(true)
        return "false", false
    }
    
    func main() {
        s, ok := a(false)
       fmt.Println(s, ok)
    }

    https://play.golang.org/p/usin2k0g3qw


解决方案


c 为 false 时,您的递归代码将始终返回“false” false。请参阅下面的正确代码。

package main

import (
    "fmt"
)

func a(c bool) (string, bool) {
    if c {
        return "true", true
    }
    return a(true)
}

func main() {
    s, ok := a(false)
   fmt.println(s, ok)
}

尚不清楚您认为代码应该做什么,但它实际上在做什么:

  1. 您使用值 false 调用 a

    它检查 c 是否为 true:

    if c {

    但事实并非如此,所以它还在继续

  2. 它再次调用 a,这次的值为 true,但完全忽略结果:

    a(true)
  3. 然后返回 false:

    return "false", false

这意味着步骤 #2 是完全无操作的(并且可能被编译器完全删除)。

也许您想对 a(true) 的返回值执行某些操作?

到这里,我们也就讲完了《从函数返回的正确方法是什么?》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!

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