mtq558 2021-01-27 22:28 采纳率: 0%
浏览 0

逻辑我能懂为啥我的执行结果跟分析不一样呢!~

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

但是我的执行结果是:

  • 写回答

1条回答 默认 最新

  • XGrscM 2023-08-04 15:52
    关注

    int转字符串使用strconv包下的Itoa方法,下次遇到这种问题可以先打印变量看看~

    评论

报告相同问题?

悬赏问题

  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示
  • ¥15 扫描项目中发现AndroidOS.Agent、Android/SmsThief.LI!tr
  • ¥15 怀疑手机被监控,请问怎么解决和防止
  • ¥15 Qt下使用tcp获取数据的详细操作