go的方法可以直接返回局部变量的指针,这主要依赖go是有runtime的语言,编译器在发现有变量可以逃逸出去的时候会在堆上分配变量而不是栈上,这样就可以返回该变量的指针了,且会使该地址的引用+1,当生命空间结束时,gc会去回收。 packagemainimport"fmt"functest()*int{varinnerint=100return&inner}funcmain(){outer:...
1. 可以返回局部变量的指针 作为少数包含指针的语言,它与C还是有所不同。C中函数不能够返回局部变量的指针,因为函数结束时局部变量就会从栈中释放。而golang可以做到返回局部变量的一点 #include <iostream>using namespace std;int* get_some() {int a = 1;return &a; }int main() {cout << "a = " ...
GO编译器会自动检查函数中的局部变量,在函数外面有没有人使用,如果有人使用,编译器会将局部变量放到GO的垃圾回收堆上,也就是说,将局部变量升级为堆上的变量,这与C中的static是一回事,但GO比C强大,这个变量你不用担心它会不会导致memory leak,因为GO有强大的垃圾回收机制。