[Go] ํฌ์ธํฐ
Go์ ํฌ์ธํฐ๋ C/C++ ๋ฑ์ ํฌ์ธํฐ์ ๋น์ทํ๋ฉด์๋ ์ด๋ค ๋ถ๋ถ์์๋ ์ข ์ด์ํ๊ฒ ๋ค๋ฅธ ์ ์ด ์๋ค.
๊ธฐ๋ณธ ๋ฌธ๋ฒ
ํฌ์ธํฐ์ ํ์
์ *T์ ํํ๋ก ํํ๋๋ฉฐ, ํฌ์ธํฐ๊ฐ์ ์ฐธ์กฐ๋ & ์ฐ์ฐ์๋ฅผ ํตํด ์ํํ ์ ์๋ค.
์ฌ๊ธฐ๊น์ง๋ C์ ๋ค๋ฅผ๋ฐ๊ฐ ๊ฑฐ์ ์๋ค.


๊ทธ๋์ C์ฒ๋ผ ํจ์๋ก ๋ชจ๋ํ๋ฅผ ํ ๋๋ ํฌ์ธํฐ๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋๊ธฐ๋ ํํ๋ก ์ฌ์ฉํ๋ ๊ฒ์ด ๋ณดํต์ด๋ค.

Receiver์์์ ํฌ์ธํฐ
Receiver๋ ๋ฉ์๋ ์ ์์์ this ๋ฐ์ธ๋ฉ์ ํด์ฃผ๋ ๋ถ๋ถ์ ๋งํ๋ค.
์ฌ๊ธฐ์๋ ํฌ์ธํฐ๊ฐ ๋ง์ด ๋ค์ด๊ฐ๋๋ฐ, ๋ค์ด๊ฐ๋ ๊ฒ๊ณผ ๋ค์ด๊ฐ์ง ์๋ ๊ฒ์๋ ํฐ ์ฐจ์ด๊ฐ ์๋ค.
๋ฆฌ์๋ฒ๋ ์ฌ์ค ํ๋ผ๋ฏธํฐ์ ๋์๋ฐฉ์์ด ํฐ ์ฐจ์ด๊ฐ ์๋ค.
๊ทธ ๋ง์ธ์ฆ์จ, ํฌ์ธํฐ๋ก ์ ๋ฌ๋ฐ์์ ๋๋ ํด๋น ๊ฐ์ฒด๋ฅผ ์์ ํ ์ ์๊ณ , ํฌ์ธํฐ๊ฐ ์๋๋๋ ์์ ํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์ด๊ฑด Rust์์์ self, &mut self์ ์ฐจ์ด์ ๊ฐ๋ค.
์๋ฅผ ๋ค์ด ์ด๋ ๊ฒ ํฌ์ธํฐ๋ก ๋ฆฌ์๋ฒ๋ฅผ ๋ฐ์ ๊ฒฝ์ฐ์๋


ํฌ์ธํฐ๋ฅผ ํตํด ์ด๋ฐ์ ๋ฐ ์์ ์ด ๊ฐ๋ฅํ๋ฉฐ, ์ ๋์ํ๋ค.
ํ์ง๋ง ๊ทธ๋ฅ ๊ฐ์ผ๋ก ๋ฐ์ ๊ฒฝ์ฐ์๋


๊ทธ ์์ ์ฌํญ์ด ์๋ณธ์ ๋ฐ์๋์ง ์๋๋ค.
ํฌ์ธํฐ๋ก ๋ฐ์ง ์๊ณ ๊ฐ ํ์
์ผ๋ก ๋ฐ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ง ๊ทธ๋๋ก ๋ณต์ฌ๊ฐ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
๊ฐ ํ์ ์ Receiver๋ ๋ถ๋ณ ๋ฉ์๋์๋ง ์ฌ์ฉํ๋๊ฒ ์ข๋ค.
์ธํฐํ์ด์ค์ ํฌ์ธํฐ
Golang์์ ์ธํฐํ์ด์ค๋ ๊ฝค๋ ๋
ํนํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๋ค.
๊ทธ๋์ C++๋ Rust์ฒ๋ผ ์์ rawํ ๊ตฌ์กฐ๋ฅผ ์ธ์ด๋ฅผ ๋จผ์ ์ ํ๋ค๋ฉด ๋นํฉ์ค๋ฌ์ธ ์ ์๋ค.
Golang์ ์ธํฐํ์ด์ค๋ ํ์
์ ๋ณด์ ๊ทธ์น๋ ๊ฒ์ด ์๋๋ผ, ๊ทธ ์์ฒด๋ก ๋ฐ์ฑ๋ ํฌ์ธํฐ ๊ฐ์ฒด๋ค.
๊ทธ๋์ ๋ค๋ฅธ ํ์
๋ค์ ํฌ์ธํฐ๋ฅผ *T์ ํํ๋ก ํํํ์ง๋ง, ์ธํฐํ์ด์ค์๋ ํฌ์ธํฐ ํํ์ ๋ถ์ด์ง ์์๋ ๋๋ค.
C++์์ ๋์ ํฐ์ง๋ ์ฌ๋ผ์ด์ฑ ๋ฌธ์ ๊ฐ์ ๊ฒ๋ ์๋ค.
์ธํฐํ์ด์ค๊ฐ ์๊ณ

๊ตฌํ์ฒด๊ฐ ์๋ค๋ฉด

๊ทธ๋ฅ ๋ก์ปฌ ๊ฐ์ฒด์ ํฌ์ธํฐ๋ฅผ ์ด๋ฐ ํํ๋ก ๋ง ๋๋ ค๋ฐ์๋ ๋๋ค.
Rust๋ C/C++์์๋ ๊ฟ๋ ๋ชปํ ํ์์ง๋ง, Go๋ ๋๋ค. ์ธํฐํ์ด์ค๊ฐ ์์์ ๋ฐ์ฑ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ด๋ค.