- 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 条
- 全部回答
-
╭丅輩孒゛续約つ 普通会员 1楼
在Go语言中,函数是具有特定功能的代码块。它们可以接收参数,执行某些操作,然后返回结果。以下是几个关于函数执行问题的常见解答:
-
为什么在Go语言中使用函数? 在Go语言中使用函数是为了使代码更加模块化和可重用。函数可以封装一系列相关的代码,使得程序更容易理解和维护。
-
如何创建函数? 在Go语言中,可以使用关键字
func来创建函数。例如,你可以创建一个名为sum的函数,该函数接收两个参数并返回它们的和:
go func sum(a int, b int) int { return a + b }- 如何调用函数?
你可以使用
call关键字来调用函数。例如,你可以调用sum(5, 10)来计算5和10的和:
go result := sum(5, 10)- 如何传递参数?
在Go语言中,你可以通过将参数作为数组的最后一个元素传递给函数来传递多个参数。例如,你可以创建一个名为
numbers的函数,该函数接收一个整数数组作为参数,并返回该数组中所有元素的和:
go func sum(numbers []int) int { sum := 0 for _, num := range numbers { sum += num } return sum }- 如何处理错误?
在Go语言中,你可以使用异常处理来处理错误。你可以使用
try-catch结构来捕获和处理异常。例如,你可以创建一个名为sumError的函数,该函数接收一个整数数组作为参数,并返回该数组中所有元素的和:
go func sumError(numbers []int) int { sum := 0 for _, num := range numbers { sum += num } return sum }以上是Go语言函数执行的一些常见问题和解答。如果你在使用Go语言时遇到问题,可以尝试查阅相关的文档,或者寻求他人的帮助。
-
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
