๋ฐํ์(Runtime) visual code์์ ๋ธ๋ผ์ฐ์ ์คํ ๋จ์ถํค: Alt+B Go runtime์ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ, ๊ฐ๋น์ง ์์ง, ๋์์ฑ์ ํฌํจํ์ฌ Go ํ๋ก๊ทธ๋ฆผ์ ์คํ์ ๊ด๋ฆฌํ๋ ์ญํ ์ ํฉ๋๋ค. ์ด ๋ฌธ์์์๋ Go runtime์ ์์ธํ ์ดํด๋ณด๊ณ ์ํคํ
์ด, ํน์ฑ๊ณผ ์ฅ์ ์ ์ดํด๋ด
๋๋ค. Go Runtime Architecture Go runtime์ ๋ชจ๋์์ด๊ณ ์ ์ฐํ๊ฒ ์ค๊ณ๋์์ผ๋ฉฐ ๊ฐ๋ฐ์๊ฐ ํน์ ์๊ตฌ์ฌํญ์ ๋ฐ๋ผ ๋์์ ์ฌ์ฉ์ ์ ์ํ ์ ์๋ ๊ณ์ธต์ ์ํคํ
์ณ๋ฅผ ๊ฐ์ถ๊ณ ์์ต๋๋ค. ๋ฐํ์์ ์ค์ผ์ค๋ฌ(schedualer), ๊ฐ๋น์ง ์์ง๊ธฐ(garbage collector), ๋ฉ๋ชจ๋ฆฌ ํ ๋น์(memory alllocator) ๋ฐ ์คํ๊ด๋ฆฌ(stack management)๋ฅผ ํฌํจํ ์ด๋ ค ํต์ฌ ๊ตฌ์ฑ ์์๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. Schedualer Go ๋ฐํ์์ ํต์ฌ์ ๊ณ ๋ฃจํด์ ์คํ์ ๊ด๋ฆฌํ๋ ์ค์ผ์ค๋ฌ์
๋๋ค. ๊ณ ๋ฃจํด์ ํจ์จ์ ์ธ ๋์์ฑ์ ๊ฐ๋ฅํ๊ฒ ํ๋ ๊ฐ๋ฒผ์ด ์ค๋ ๋์
๋๋ค. ์ค์ผ์ค๋ฌ๋ ์ฌ์ฉ ๊ฐ๋ฅํ ์ค๋ ๋์ ๊ณ ๋ฃจํด์ ๋ถ์ฐํ๊ณ , ์ค๋ ๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง๋ฅผ ๊ด๋ฆฌํ๊ณ , I/O ์์
์ ์กฐ์ ํ๋ ์ญํ ์ ํฉ๋๋ค. thread(์ค๋ ๋): ํ๋ก๊ทธ๋จ ๋ด์์ ์คํ๋๋ ํ๋ฆ์ ๋จ์๋ก ๋์์ ์ฌ๋ฌ ์์
์ด๋ ํ๋ก๊ทธ๋จ์ ์คํํ๋ ๊ฒ์
๋๋ค. ์ฆ, ์ฝ๋๋ฅผ ์คํํ ์ ์๋ ๊ฐ ๋จ์๋ฅผ ์ค๋ ๋๋ผ๊ณ ํฉ๋๋ค. ๊ณ ๋ฃจํด(goroutine): Go ์ธ์ด๋ก ๋์์ ์คํ๋๋ ๋ชจ๋ ํ๋์ ์๋ฏธํฉ๋๋ค. ๊ณ ๋ฃจํด์ ๋ง๋๋ ๋น์ฉ์ ์ค๋ ๋์ ๋นํด ๋งค์ฐ ์ ๊ธฐ ๋๋ฌธ์ ๊ฒฝ๋ ์ค๋ ๋๋ผ๊ณ ํฉ๋๋ค. ๋ชจ๋ ํ๋ก๊ทธ๋จ์ ์ ์ด๋ ํ๋์ main() ํจ์๋ผ๋ ๊ณ ๋ฃจํด์ ํฌํจํ๊ณ ๊ณ ๋ฃจํด์ ํญ์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์๋ํฉ๋๋ค. ๋ฉ์ธํจ์๊ฐ ์ข
๋ฃ๋๋ฉด ๋ชจ๋ ๊ณ ๋ฃจํด์ ์ข
๋ฃ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฏ๋ก ๊ณ ๋ฃจํด๋ณด๋ค main์ด ๋จผ์ ์ข
๋ฃ๋๋ ๊ฒ์ ๋ฐฉ์งํด์ผ ํฉ๋๋ค. Go ์ค์ผ์ค๋ฌ๋ ๋งค์ฐ ํจ์จ์ ์ด๊ณ ํ์ฅ ๊ฐ๋ฅํ๋๋ก ์ค๊ณ๋์ด ๋ง์ ์์ ๋์ ๊ณ ๋ฃจํด์ ์์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์ค๋ ๋ ๊ฐ์ ๋ถํ๋ฅผ ๋ถ์ฐํ์ฌ ๊ฒฝํฉ์ ์ต์ํํ๊ณ ์ฑ๋ฅ์ ๊ฐ์ ํ๋ ์์
ํ์น๊ธฐ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํฉ๋๋ค...
bind(event, ํจ์ ๋๋ ๋ฉ์๋)
event ํ์ฑํ์ ์ํด ํจ์๋ ๋ฉ์๋๋ฅผ ์์ ฏ๊ณผ ์ฐ๊ฒฐ
| ๋ถ๋ฅ | ์ด๋ฆ | ๊ธฐ๋ฅ |
|---|---|---|
| Button | <Button-1> | ๋ง์ฐ์ค ์ผ์ชฝ๋ฒํผ ๋๋ฅผ ๋ |
| <Button-2> | ๋ง์ฐ์ค ํ ๋๋ฅผ ๋ | |
| <Button-3> | ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ๋ฒํผ ๋๋ฅผ ๋ | |
| <Button-4> | ์คํฌ๋กค์ | |
| <Button-5> | ์คํฌ๋กค๋ค์ด | |
| <MouseWheel> | ๋ง์ฐ์ค ํ ์ด๋ | |
| Motion | <Motion> | ๋ง์ฐ์ค ์์ง์ผ ๋ |
| <B1-Motion> | ๋ง์ฐ์ค ์ผ์ชฝ๋ฒํผ ๋๋ฅธ์ํ๋ก ์์ง์ผ ๋ | |
| <B2-Motion> | ๋ง์ฐ์ค ํ ๋๋ฅธ์ํ๋ก ์์ง์ผ ๋ | |
| <B3-Motion> | ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ๋ฒํผ ๋๋ฅธ ์ํ๋ก ์์ง์ผ ๋ | |
| Release | <ButtonRelease-1> | ๋ง์ฐ์ค ์ผ์ชฝ๋ฒํผ ๋ ๋ |
| <ButtonRelease-2> | ๋ง์ฐ์จ ํ ๋ฒํผ ๋ ๋ | |
| <ButtonRelease-3> | ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ๋ฒํผ ๋ ๋ | |
| DoubleClick | <Double-Button-1> | ๋ง์ฐ์ค ์ผ์ชฝ๋ฒํผ ๋๋ธ ํด๋ฆญํ ๋ |
| <Double-Button-2> | ๋ง์ฐ์ค ํ ๋ฒํผ ๋๋ธ ํด๋ฆญํ ๋ | |
| <Double-Button-3> | ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ๋ฒํผ ๋๋ธ ํด๋ฆญํ ๋ | |
| WidgetOperation | <Enter> | ์์ ฏ์์ผ๋ก ๋ง์ฐ์คํฌ์ธํฐ ์ง์ ์ |
| <Leave> | ์์ ฏ๋ฐ์ผ๋ก ๋ง์ฐ์คํฌ์ธํฐ ๋๊ฐ์ | |
| <FocusIn> | Tabํค๋ก ์์ ฏ์ ํ์ | |
| <FocusOut> | Tabํค๋ก ์์ ฏ์ ํํ๋ฆด์ | |
| <Configure> | ์์ ฏ ๋ชจ์ ์์ ์ | |
| KeyInput | <Key> | ํน์ ํค๊ฐ ์
๋ ฅ๋์์ ๋ <A>, <3>, <F2> ๋ฑ... |
| <Return> | Enterํค ์ ๋ ฅ์ | |
| <Cancel> | Breakํค ์ ๋ ฅ์ | |
| <BackSpace> | BackSpaceํค ์ ๋ ฅ์ | |
| <Caps_Lock> | CapsLockํค ์ ๋ ฅ์ | |
| <Prior> | Page Upํค ์ ๋ ฅ์ | |
| <Up>, <Down>, <Right>, <Left> | ๋ฐฉํฅํค ์ ๋ ฅ์ | |
| Assistant KeyInput | <Shift-Key> | Shift + ํน์ Key ์ ๋ ฅ์ |
| <Control-Key> | Ctrl + ํน์ Key ์ ๋ ฅ์ | |
| <Alt-Key> | Alt + ํน์ Key ์ ๋ ฅ์ |
๋๊ธ
๋๊ธ ์ฐ๊ธฐ