만약에 제가 구조체 A에 대해 *A를 반환하는 함수 B를 만들었고, 함수 B의 내용은 구조체 A를 'C := A{...}'으로 초기화해주고 &C를 반환하는거라고 했을 때, 함수 B를 main에서 'D := B()'처럼 사용하면, C언어에서 malloc으로 할당했을 때야 힙에 할당되니까 주소 값 참조가 일어나겠지만 golang에서는 :=로 할당했으니 함수 B의 스택에 할당되어 있던 거니까 함수 B가 끝나면서 스택은 회수될 것이고, 어쩔 수 없이 C에서 D로는 변수 값 복사가 일어나는 거지 주소 값 참조는 안되는 것 맞나요? C언어에서 malloc으로 일단 주소값 프린트해서 비교했을 때 다르게 나오긴 했는데, 제가 이해한게 맞는 지 여쭤보고자 질문드립니다.