
Reflection
reflect ํจํค์ง, ํ์ ๊ฒ์ฌ, ๊ฐ ์กฐ์, struct tags, ์ฌ์ฉ ์ฌ๋ก, ์ฑ๋ฅ
1Go์ reflect ํจํค์ง๋ ๋ฌด์์
๋๊น?
Go์ reflect ํจํค์ง๋ ๋ฌด์์ ๋๊น?
๋ต๋ณ
reflect ํจํค์ง๋ ๋ฐํ์์ ํ์ ๊ณผ ๊ฐ์ ๊ฒ์ฌํ๊ณ ์กฐ์ํ ์ ์๊ฒ ํด์ค๋๋ค. ์ ๋ค๋ฆญ ๋ผ์ด๋ธ๋ฌ๋ฆฌ(JSON ๋ง์ฌ๋ง, ORM) ๊ตฌํ์ ์ฌ์ฉ๋์ง๋ง, ํ์ ์์ ์ฑ๊ณผ ์ฑ๋ฅ์ ํฌ์ํ๋ฏ๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋์์ ์ง์ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅ๋์ง ์์ต๋๋ค.
2reflect ํจํค์ง๋ก ๋ณ์์ ํ์
์ ์ป์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
reflect ํจํค์ง๋ก ๋ณ์์ ํ์ ์ ์ป์ผ๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํฉ๋๊น?
๋ต๋ณ
reflect.TypeOf() ํจ์๋ ์ธ์๋ก ์ ๋ฌ๋ ์ธํฐํ์ด์ค์ ๋์ ํ์ ์ ๋ํ๋ด๋ reflect.Type์ ๋ฐํํฉ๋๋ค. ๋ณ์๊ฐ nil์ด๋ฉด reflect.TypeOf()๋ nil์ ๋ฐํํฉ๋๋ค. ๋ฐํ๋ Type์ .Kind()๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ ๋ฒ์ฃผ(int, string, struct ๋ฑ)๋ฅผ ์ป์ ์ ์์ต๋๋ค.
3reflect.Type๊ณผ reflect.Value์ ์ฐจ์ด์ ์ ๋ฌด์์
๋๊น?
reflect.Type๊ณผ reflect.Value์ ์ฐจ์ด์ ์ ๋ฌด์์ ๋๊น?
๋ต๋ณ
reflect.Type์ ํ์ ์ ๋ฉํ๋ฐ์ดํฐ(์ด๋ฆ, kind, ๋ฉ์๋, ํ๋)๋ฅผ ๋ํ๋ด๋ฉฐ reflect.TypeOf()๋ก ์ป์ต๋๋ค. reflect.Value๋ ๊ตฌ์ฒด์ ์ธ ๊ฐ์ ๋ํ๋ด๋ฉฐ reflect.ValueOf()๋ก ์ฝ๊ฑฐ๋ ์์ ํ ์ ์์ต๋๋ค. ๋์ ์ํธ ๋ณด์์ ์ ๋๋ค. Type์ '๋ฌด์'์ ์ค๋ช ํ๊ณ Value๋ '๋ฐ์ดํฐ'๋ฅผ ๋ด์ต๋๋ค.
reflection์ ํตํด ๋ณ์์ ๊ฐ์ ์ด๋ป๊ฒ ์์ ํฉ๋๊น?
reflect.Kind๋ ๋ฌด์์ ๋๊น?
+17 ๋ฉด์ ์ง๋ฌธ
๊ธฐํ Go ๋ฉด์ ์ฃผ์
Go ๊ธฐ์ด
Go ๋ฐ์ดํฐ ๊ตฌ์กฐ
Go ์ธํฐํ์ด์ค
์๋ฌ ์ฒ๋ฆฌ
Goroutine ๊ธฐ์ด
Channels
Go Modules
HTTP ์๋ฒ
HTTP ํด๋ผ์ด์ธํธ
JSON ์ธ์ฝ๋ฉ
Database/SQL
context ํจํค์ง
Testing
๋์์ฑ ํจํด
๋๊ธฐํ ํ๋ฆฌ๋ฏธํฐ๋ธ
Go ์น ํ๋ ์์ํฌ
REST API ์ค๊ณ
gRPC
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ
์ฑ๋ฅ ์ต์ ํ
Generics
Go Design Patterns
Microservices
๋ณด์ ๋ฐ ์ธ์ฆ
Docker & Containerization
Kubernetes Basics
๊ณ ๊ธ Go
CLI ๊ฐ๋ฐ
๋ค์ ๋ฉด์ ์ ์ํด Go์ ๋ง์คํฐํ์ธ์
๋ชจ๋ ์ง๋ฌธ, flashcards, ๊ธฐ์ ํ ์คํธ, ์ฝ๋ ๋ฆฌ๋ทฐ ์ฐ์ต, ๋ฉด์ ์๋ฎฌ๋ ์ดํฐ์ ์ ๊ทผํ์ธ์.
๋ฌด๋ฃ๋ก ์์ํ๊ธฐ