[Zig] ๊ตฌ์กฐ์ฒด

[์›๋ณธ ๋งํฌ]

zig์˜ ๊ตฌ์กฐ์ฒด ์ •์˜๋Š” Rust์™€ Go๋ฅผ ์„ž์–ด๋†“์€ ํ˜•ํƒœ๋ฅผ ์ง€๋‹Œ๋‹ค.
์•„๋ž˜๋Š” ๊ฐ„๋‹จํ•œ 2์ฐจ์› ์ขŒํ‘œ ์ •๋ณด๋ฅผ ๊ธฐ๋กํ•˜๋Š” ๊ตฌ์กฐ์ฒด ์˜ˆ์ œ๋‹ค.

Point๊ฐ€ ๊ตฌ์กฐ์ฒด๋ช…์ด๊ณ , x์™€ y๋ผ๋Š” ํ•„๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.

์‚ฌ์šฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

๊ตฌ์กฐ์ฒด ์ดˆ๊ธฐํ™”๋Š” ๋˜ C์—์„œ ๋ฒ ๊ปด์™”๋‹ค.
ํ•„๋“œ๋ช… ์•ž์— .์„ ๋ถ™์ด๊ณ  =๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋Š” ํ˜•ํƒœ๋‹ค.


์ƒ์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด ๋‹น์—ฐํžˆ ํ•„๋“œ์˜ ๊ฐ’ ๋ณ€๊ฒฝ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค.


๋‹ค๋งŒ zig๋Š” ์š”์ฆ˜์˜ ๋งŒ๋งŒํ•œ ์–ธ์–ด๋“ค๊ณผ ๋‹ค๋ฅด๊ฒŒ ๋‚ด๋ถ€ ๊ฐ€๋ณ€์„ฑ๋„ ์ฒ ์ €ํžˆ ๊ฒ€์‚ฌํ•œ๋‹ค.
๊ฐ์ฒด๊ฐ€ const๋ฉด ๋‚ด๋ถ€ ํ•„๋“œ์— ๋Œ€ํ•œ ๋ถˆ๋ณ€์„ฑ๋„ ๊ฒ€์‚ฌ๋ฅผ ํ•œ๋‹ค.




๋ณ€์ˆ˜ ์‘ค์…”๋„ฃ๊ธฐ

zig์˜ ๊ตฌ์กฐ์ฒด ์ •์˜๋Š” ์ƒ์ˆ˜๋‚˜ ๋ณ€์ˆ˜ ๊ฐ™์€ ์ „์—ญ๊ฐ’์„ ์‘ค์…”๋„ฃ๋Š” ๊ธฐ๋Šฅ์ด ์ œ๊ณต๋œ๋‹ค.

์‚ฌ์šฉํ•˜๋Š”๋ฐ ์žˆ์–ด์„œ ๋ณ„๋‹ค๋ฅธ ์ œ์•ฝ์€ ์—†๋‹ค.




ํ•„๋“œ ๊ธฐ๋ณธ๊ฐ’

zig๋Š” ๋А์Šจํ•˜๋ฉด์„œ๋„ ๋ปฃ๋ปฃํ•œ ์–ธ์–ด๋‹ค.

๊ตฌ์กฐ์ฒด์˜ ์ดˆ๊ธฐํ™”์—๋Š” ํ•ญ์ƒ ๋ชจ๋“  ํ•„๋“œ์˜ ๋ช…์‹œ์  ์ดˆ๊ธฐํ™”๋ฅผ ์š”๊ตฌํ•˜์ง€๋งŒ


๊ทธ๊ฒŒ ๊ท€์ฐฎ๋‹ค๋ฉด ๋””ํดํŠธ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ๋œ๋‹ค.




๋ฉ”์„œ๋“œ ์ •์˜

๋ฉ”์„œ๋“œ ์ •์˜๋Š” ๊ตฌ์กฐ์ฒด ์ •์˜ ๋‚ด์— ํ•จ์ˆ˜๋ฅผ ๊ตฌ๊ฒจ๋„ฃ๋Š” ํ˜•ํƒœ๋กœ ์ž‘์„ฑ๋œ๋‹ค.

์ข€ ํŠน์ดํ•œ ๊ฒƒ์€, ๊ธฐ๋ณธ์ ์œผ๋กœ ์ •์  ํ•จ์ˆ˜์ง€๋งŒ ๊ฐ์ฒด์˜ ๋™์  ๋ฉ”์„œ๋“œ์ธ ๊ฒƒ์ฒ˜๋Ÿผ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์“ธ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.

init์˜ ๊ฒฝ์šฐ์—๋Š” ๋‹น์—ฐํžˆ ์ƒ์„ฑ์šฉ ํ•จ์ˆ˜์ด๋‹ˆ ๊ฐ์ฒด์™€ ๋ณ„๊ฐœ๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
ํ•˜์ง€๋งŒ add๋Š” a.add(b)์˜ ํ˜•ํƒœ๋กœ๋„, add(a,b)์˜ ํ˜•ํƒœ๋กœ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ทจํ–ฅ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.



์ฐธ์กฐ
https://ziglang.org/documentation/0.11.0/#struct