mtq558
2021-01-27 22:28逻辑我能懂为啥我的执行结果跟分析不一样呢!~
package main
import (
"fmt"
)
func Addup() func (int) int{
var n int =10
var str string = "Hello"
return func(x int)int{ //返回值是一个匿名函数,那么n和这个retur构成了一个闭包~,形成一个整体。
n = n + x
str += string(x) //自加一下x
fmt.Println("str=",str)
return n // 这个n 会因为调用 一直在改变值
}
}
func main(){
f:= Addup()
// 因为反复调用~初始化一次,然后不断的在改变值,所以才有下面的这个结果。!!!!
fmt.Println(f(1)) //11
fmt.Println(f(2)) //13
fmt.Println(f(3)) //16
}
理论上,结果应该是
str=hello1(ASCII码那个)
11
str=hello12
13
str=hello123
16
但是我的执行结果是:
- 点赞
- 回答
- 收藏
- 复制链接分享
0条回答
为你推荐
- 判断字符串是否为回文,为什么输出结果是错的?代码的逻辑哪里错了?
- c语言
- 2个回答
- 对多个多维数组执行相同的逻辑
- function
- foreach
- arrays
- php
- 1个回答
- 哪里的逻辑错了?为什么运行结果不对?
- c语言
- 2个回答
- 这样的思路有逻辑问题吗?为什么运行不了?
- c语言
- 2个回答
- 我想对从php中的表单发布的值执行逻辑运算
- html
- php
- 2个回答
换一换