๐๐ฅ๐ฅ ๋ผ์ผ๋ฆฌ์ ์ฝ๋ ๋ถ์ค๋ฌ๊ธฐ ๐๐ฅ๐ฅ
์ธํ๋ฐ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋๋ด๋ GO์ธ์ด ํ๋ก๊ทธ๋๋ฐ ํต์ฌ ๊ธฐ์ด ์
๋ฌธ ๊ณผ์ ๊ฐ์ ์ ๋ฆฌ
11.1 ํ์ผ ์
์ถ๋ ฅ 11.1.1 os ํจํค์ง - ํ์ผ ์ฝ๊ธฐ, ์ฐ๊ธฐ Go์์ ํ์ผ์ ์ฝ๊ณ ์ฐ๊ธฐ ์ํด Go ํ์ค ํจํค์ง์ธ os ํจํค์ง๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
os.Open() : ๊ธฐ์กด ํ์ผ ์ด๊ธฐ os.Create() : ์ ํ์ผ์ ์์ฑ os.Close() : ํ์ผ ๋ฆฌ์์ค ๋ซ๊ธฐ ํ์ผ ์ฝ๊ธฐ ๋ฐ ํ์ ์์ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 package main import ( "fmt" "os" ) // ์๋ฌ ์ฒดํฌ ๋ฐฉ์ 1 func errCheck1(e error) { if e !
์ธํ๋ฐ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋๋ด๋ GO์ธ์ด ํ๋ก๊ทธ๋๋ฐ ํต์ฌ ๊ธฐ์ด ์
๋ฌธ ๊ณผ์ ๊ฐ์ ์ ๋ฆฌ
10.1 ์๋ฌ์ฒ๋ฆฌ 10.1.1 Go ์๋ฌ ์ํํธ์จ์ด์ ํ์ง ํฅ์์ ๊ฐ์ฅ ์ค์ํ ๊ฒ โ ์ ํ์ฝ๋ ๋ฐ ์๋ฌ ์ ๋ณด ๋ฑ์ ๋จ๊ธฐ๋ ๊ฒ
Go ์์๋ ๊ธฐ๋ณธ์ ์ผ๋ก error ๋ผ๋ ์ธํฐํ์ด์ค ํ์
์ ๊ฐ๊ณ ์๋ค. ๊ฐ๋ฐ์๋ ์ด ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ์ปค์คํ
์๋ฌ ํ์
์ ๋ง๋ค ์ ์๋ค. 1 2 3 type error interface { Error() string } 10.1.2 Go ์๋ฌ์ฒ๋ฆฌ Go ํจ์์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฆฌํด ํ์
์ ๋๊ฐ ๊ฐ๊ณ ์๋ค.
์ธํ๋ฐ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋๋ด๋ GO์ธ์ด ํ๋ก๊ทธ๋๋ฐ ํต์ฌ ๊ธฐ์ด ์
๋ฌธ ๊ณผ์ ๊ฐ์ ์ ๋ฆฌ
9.1 ๊ณ ๋ฃจํด 9.1.1 GoRoutine goroutine์ go ๋ฐํ์์ด ๊ด๋ฆฌํ๋ lightweight ๋
ผ๋ฆฌ์ (๊ฐ์ฅ์ ) Thread์ด๋ค. ์์ฑ ๋ฐฉ๋ฒ์ด ๋งค์ฐ ๊ฐ๋จํ๊ณ ๋ฆฌ์์ค๋ฅผ ๋งค์ฐ ์ ๊ฒ ์ฌ์ฉํ๋ค. โ ์ ๋ง์ ๊ณ ๋ฃจํด์ ๋์์ ์์ฑ ๋ฐ ์คํ์ด ๊ฐ๋ฅ Java๋ Python์ ์ค๋ ๋๋ MB๋จ์์ธ ๋ฐ๋ฉด์ GO KB ๋จ์์ด๋ค. ๋น๋๊ธฐ์ asynchronously ํจ์ ๋ฃจํด์ ์คํ ํ๋ค. ์ฑ๋์ ํตํด ๋ฃจํด๊ฐ ํต์ ์ด ๊ฐ๋ฅํ๋ค. ๊ณต์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉ์์ ์ ํํ ๋๊ธฐํ ์ฝ๋ฉ์ด ํ์ํ๋ค. ์ฑ๊ธ ๋ฃจํด์ ๋นํด ํญ์ ๋น ๋ฅด์ง๋ ์๋ค.
์ธํ๋ฐ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋๋ด๋ GO์ธ์ด ํ๋ก๊ทธ๋๋ฐ ํต์ฌ ๊ธฐ์ด ์
๋ฌธ ๊ณผ์ ๊ฐ์ ์ ๋ฆฌ
8.1 ์ธํฐํ์ด์ค 8.1.1 ์ธํฐํ์ด์ค๋ ๊ตฌ์กฐ์ฒด๊ฐ ํ๋๋ค์ ์งํฉ์ฒด๋ผ๋ฉด interface๋ ๋ฉ์๋๋ค์ ์งํฉ์ด๋ค. ์ธํฐํ์ด์ค๋ ํ์
์ด ๊ตฌํํด์ผ ํ๋ ๋ฉ์๋ ์ํ prototype ์ ์ ์ํ๋ค. โ ์ถ์ํ๋ฅผ ์ ๊ณต ๋์์ธํจํด ์ธก๋ฉด์์ client์ ์
์ฅ โ ์ธํฐํ์ด์ค์ ์ ์๋ ๋ฉ์๋์ ๋์์ ๋ณด์ฅํ๋ฏ๋ก ์ ํํ class์ ๊ตฌํ๋ฐฉ๋ฒ์ ๋ชฐ๋ผ๋ ๋๋ค. ํด๋์ค๊ฐ์ ๊ฒฐํฉ๋ ๊ฐ์ โ ์ ์ง๋ณด์์ฑ ํฅ์, ๊ธฐ๋ฅ ์ถ๊ฐ ์ฉ์ด์ฑ, ๋
๋ฆฝ์ ์ธ ํ๋ก๊ทธ๋๋ฐ ๊ฐ๋ฅ ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์๋ ํด๋น ํ์
์ด ๊ทธ ์ธํฐํ์ด์ค ๋ฉ์๋๋ค์ด ๋ชจ๋ ๊ตฌํ๋์ด์ผ ํ๋ค.
์ธํ๋ฐ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋๋ด๋ GO์ธ์ด ํ๋ก๊ทธ๋๋ฐ ํต์ฌ ๊ธฐ์ด ์
๋ฌธ ๊ณผ์ ๊ฐ์ ์ ๋ฆฌ
7.1 ํจ์ ๊ธฐ์ด 7.1.1 ํจ์ ์ฌ๋ฌ ๋ฌธ์ฅ์ ๋ฌถ์ด์ ์คํํ๋ ์ฝ๋ ๋ธ๋ญ ๋จ์ func ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ํ๋ค. ํ ์ธ์ด์ ๋ฌ๋ฆฌ ๋ณํ ๊ฐ return value ๋ค์ ๊ฐ๋ฅ 1 2 3 4 func ํจ์๋ช
(๋งค๊ฐ๋ณ์) (๋ฐํํ์
or ๋ฐํ ๊ฐ ๋ณ์๋ช
) : ๋ฐํ ๊ฐ ์กด์ฌ func ํจ์๋ช
() (๋ฐํํ์
or ๋ฐํ ๊ฐ ๋ณ์๋ช
) : ๋งค๊ฐ๋ณ์ ์์, ๋ฐํ ๊ฐ ์กด์ฌ func ํจ์๋ช
(๋งค๊ฐ๋ณ์) : ๋งค๊ฐ๋ณ์ ์กด์ฌ, ๋ฐํ ๊ฐ ์์ func ํจ์๋ช
() : ๋งค๊ฐ๋ณ์ ์์, ๋ฐํ๊ฐ ์์ ํจ์ ์ฌ์ฉ ์์ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 package main import ( "fmt" "strconv" ) // ํจ์ ์ ์ธ ์์น๋ ์ด๋ ๊ณณ์ด ๋ ๊ฐ๋ฅ func helloGoLang() { // ๋งค๊ฐ๋ณ์ X, ๋ฐํ๊ฐ x fmt.
์ธํ๋ฐ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ๋๋ด๋ GO์ธ์ด ํ๋ก๊ทธ๋๋ฐ ํต์ฌ ๊ธฐ์ด ์
๋ฌธ ๊ณผ์ ๊ฐ์ ์ ๋ฆฌ
6.1 ๋ฐฐ์ด 6.2.1 ๋ฐฐ์ด ๋ฐฐ์ด์ ์ฉ๋, ๊ธธ์ด๊ฐ ํญ์ ๊ฐ๋ค. cap() : ๋ฐฐ์ด, ์ฌ๋ผ์ด์ค ์ฉ๋ len() : ๋ฐฐ์ด, ์ฌ๋ผ์ด์ค ๊ธธ์ด ๋๋ถ๋ถ์ ์ฌ๋ผ์ด์ค๋ฅผ ๋ง์ด ์ฌ์ฉํ๋ค. ๋ฐฐ์ด๊ณผ ์ฌ๋ผ์ด์ค ์ฐจ์ด์ ๋ฐฐ์ด ์ฌ๋ผ์ด์ค ๊ธธ์ด ๊ณ ์ ์ฌ๋ถ ๊ธธ์ด๊ฐ ๊ณ ์ ๋์ด ์๋ค. ๊ธธ์ด๊ฐ ๊ฐ๋ณ์ด๋ค. ํ์
์ฌ๋ถ ๊ฐ ํ์
์ฐธ์กฐ ํ์
์ ๋ฌ ๋ฐฉ์ ๊ฐ์ ๋ณต์ฌ ์ ๋ฌ ์ฐธ์กฐ ๊ฐ ์ ๋ฌ ๊ธฐํ ์ ์ฒด ๋น๊ต์ฐ์ฐ์ ๊ฐ๋ฅ ์ ์ฒด ๋น๊ต ์ฐ์ฐ์ ์ฌ์ฉ ๋ถ๊ฐ ๋ฐฐ์ด ์ ์ธ ์์ - 1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 var arr1 [5]int var arr2 [5]int = [5]int{1, 2, 3, 4, 5} var arr3 = [5]int{1, 2, 3, 4, 5} arr4 := [5]int{1, 2, 3, 4, 5} arr5 := [5]int{1, 2, 3} arr6 := [.