golang 内部变量超时释放机制?
今天在调试的时候发现有个内部变量调试到一半被释放了。
执行一段时间以后authUidArray的值变成乱码了:
![](https://img2023.cnblogs.com/blog/841795/202301/841795-20230104163640778-875047293.png)
我当时一脸懵逼,重来没有见过这种事情,直接颠覆我的认知,值哪里去了?c/c++/python/js可重来没有出现这种情况
以至于我还重启了电脑,重启了code,结果发现都是这样。
当然试了多次以后还是找的了一些规律,首先一个必然的原则,如果后面还用到这个变量,是肯定还有值的,不信你看:
加了一个输出以后,肯定都有值的。
![](https://img2023.cnblogs.com/blog/841795/202301/841795-20230104163939837-1736793356.png)
还发现其他情况:
如果中间处理时间比较短,它也有值,好像是golang编译器故意给临时变量设置了一个timeout时间一样
这样的话,我还能理解,
就当作是golang本身的优化吧:未来永久用不到,超时以后就直接释放了。
要是有人知道原因麻烦告诉我一下。