2012년 4월 26일 목요일

return the address of a local variable


C/C++ 에서 금지되었던, 로컬변수를 리턴하는일.

GO 에서는 가능하다.

이런일은 가비지컬렉션 기능이 있어야 가능한 일이다.




Note that, unlike in C, it's perfectly OK to return the address of a local variable; 
the storage associated with the variable survives after the function returns.







package main
import "fmt"


type MyData struct {
num int
name string
}


func func1() ( *MyData) {
localVar := MyData{ 3, "data3" }
return  &localVar
}


func main() {
p := func1()
fmt.Println(p.num, p.name)
}