账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    Go语言函数执行问题,新手请教
    34
    0
    package main
    import "fmt"
    func main(){
        p1:=test()
        p2:=test()
        fmt.Println(p1(),p2(),p1())
    }
    func test() func ()int {
        t:=0
        return func() int {
            t++
            return t
        }
    }
    

    以上是我的一个练习,但是返回结果和我预期的有点不一样,返回结果是:1,2,1
    请问有人能指点一下吗,我觉得返回值应该是1,1,1才对。
    我的疑问:
    1.当执行完p1:=test()时,可得到结果:

        p1:=func()int{
            t++
            return t
        }

    在执行p1()的时候,函数内的t属于函数test()的局部变量,为什么p1()仍然可以使用?
    2.第一次执行完p1(),再执行p1()为什么t会累加,其实这个和第一个问题本质是一样的。。

    以上就是不理解的地方,希望大家指点,我是Go学习的新手,问题可能有点简单,希望大家谅解。

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ╭丅輩孒゛续約つ 普通会员 1楼

      在Go语言中,函数是具有特定功能的代码块。它们可以接收参数,执行某些操作,然后返回结果。以下是几个关于函数执行问题的常见解答:

      1. 为什么在Go语言中使用函数? 在Go语言中使用函数是为了使代码更加模块化和可重用。函数可以封装一系列相关的代码,使得程序更容易理解和维护。

      2. 如何创建函数? 在Go语言中,可以使用关键字func来创建函数。例如,你可以创建一个名为sum的函数,该函数接收两个参数并返回它们的和:

      go func sum(a int, b int) int { return a + b }

      1. 如何调用函数? 你可以使用call关键字来调用函数。例如,你可以调用sum(5, 10)来计算5和10的和:

      go result := sum(5, 10)

      1. 如何传递参数? 在Go语言中,你可以通过将参数作为数组的最后一个元素传递给函数来传递多个参数。例如,你可以创建一个名为numbers的函数,该函数接收一个整数数组作为参数,并返回该数组中所有元素的和:

      go func sum(numbers []int) int { sum := 0 for _, num := range numbers { sum += num } return sum }

      1. 如何处理错误? 在Go语言中,你可以使用异常处理来处理错误。你可以使用try-catch结构来捕获和处理异常。例如,你可以创建一个名为sumError的函数,该函数接收一个整数数组作为参数,并返回该数组中所有元素的和:

      go func sumError(numbers []int) int { sum := 0 for _, num := range numbers { sum += num } return sum }

      以上是Go语言函数执行的一些常见问题和解答。如果你在使用Go语言时遇到问题,可以尝试查阅相关的文档,或者寻求他人的帮助。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部