이런 코드임 링크는 https://go.dev/play/p/ha01eGenqBS 여기
원래 https://gall.dcinside.com/mgallery/board/view/?id=github&no=34227&page=1 여기서 궁금햇던건데 직접 해보고 알아낸 결론
함수 내에서 선언한 literal은 매번 새로 생성된다.
생각해보니 당연하다.
golang엔 c static 처럼 함수 내에서 선언한 literal도 bss에 넣고 그러는거 없음??
https://go.dev/play/p/BQfdPCJw-Ig
클로저 쓰면 어찌저찌 흉내낼 수 있음ㅋㅋ
오호 근데 생각해보니까 const 쓰면 어떨까 싶었는데 const는 &연산자가 안먹힌다더라
배열은 새로 생성하지만 배열 안에 문자열은 매번 그대로일거 같은데 배열 멤버 주소도 찍어보자
string이 객체라서 그것도 매번 생성하려나?
baz에서 이미 string literal도 계속 주소가 바뀌던데? 지금 waitgroup 동기화 실험해보고 있어서 나중에 다시 해봄
아닌가 str이 string literal의 주소를 가리키는 변수 뭐 그런 느낌인건가 근데 string literal이나 constant는 &연산자가 안먹혀
내가 go를 안써봐서 C 스타일로 생각해보면 baz에서 str이 char*고 &str은 더블포인터처럼 돼서 매번 달라지는거 같은데 go에서도 배열을 포인터로 캐스팅 할 수 있나?
몰? 루