ํจ์
ํจ์๋ ํค์๋ func๋ฅผ ์ฌ์ฉํฉ๋๋ค.
func ํจ์๋ช
(์ธ์ ์๋ฃํ) ๋ฐํ์๋ฃํ {
๋ด์ฉ
}
func Add(a int, b int) int {
return a + b
}
์์ ๊ฐ์ด ๋งค๊ฐ๋ณ์์ ์๋ฃํ์ด ๊ฐ์ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ ์ ์์ต๋๋ค.
func Add(a, b int) int {
return a + b
}
go์์๋ Public, Private ํจ์๋ฅผ ์ํ ๋ณ๋์ ํค์๋๋ ์กด์ฌํ์ง ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํจ์๋ช ์ ์ฒซ๋ฌธ์์ ๋์์ ๋ฐ๋ผ ๊ตฌ๋ถํฉ๋๋ค.
- Public: ๋ค๋ฅธ ํจํค์ง์๋ ์ฌ์ฉ๊ฐ๋ฅํ ํจ์
- ํจ์๋ช ์ด ๋๋ฌธ์๋ก ์์
- Private: ํด๋น ํจํค์ง์์๋ง ์๋
- ํจ์๋ช ์ด ์๋ฌธ์๋ก ์์
๋ค์์ ๊ฐ์ ๋ฐํํ ์ ์์ต๋๋ค.
func Divide(a, b int) (int, bool) {
if b == 0 {
return 0, false
}
return a / b, true
}
๋ค์ ์ฝ๋์ ๊ฐ์ด ์ค๋ณต๋ ์ด๋ฆ์ผ๋ก ์๋ก์ด ๊ฐ์ ํ ๋นํ ์ ์์ต๋๋ค.
func main() {
c, success := Divide(10, 2)
c, success := Divide(10, 0) // ERROR!
fmt.Println(c, success)
}
ํจ์์ ๋งค๊ฐ๋ณ์ ๋ค์์ ๋ฐํ ์๋ฃํ์ ๋ฐํ๊ฐ์ ๋ณ์(๋ค)์ ์๋ฃํ์ ๋ฏธ๋ฆฌ ์ง์ ํ ์ ์์ต๋๋ค. ์ด ๊ฒฝ์ฐ return ๋ฌธ์ ๋ฐํ๊ฒฐ๊ณผ๋ ์๋ต๋ฉ๋๋ค.
func Sqrt1(a float64) (b float64) {
if a < 0 {
b = -(math.Sqrt(-a))
} else {
b = math.Sqrt(a)
}
return
}
๊ฐ๋ณ ์ธ์
ํค์๋ ...๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ์ธ์(Variable argument list)๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
func sum(nums ...int) int {
fmt.Printf("nums type: %T\n", nums)
sum := 0
for _, num := range nums {
sum += num
}
return sum
}
func main() {
fmt.Println(sum(1, 2, 3, 4, 5))
fmt.Println(sum(10, 20))
fmt.Println(sum())
}
nums type: []int
15
nums type: []int
30
nums type: []int
0
์ ์ฝ๋์์ range๋ฌธ์ array, slice, map์ ๋ด์ฉ์ ๋ฐ๋ณตํ๋๋ฐ ๋ง์ด ์ฌ์ฉํฉ๋๋ค. range ๋ฌธ์ ๋ฐ๋ณต์ ์ฒ๋ฆฌํ๊ธฐ ์ ์ ๊ฐ์ฒด๋ฅผ ๋ณต์ฌํด์ ์ฌ์ฉํฉ๋๋ค.
๋๊ธ
๋๊ธ ์ฐ๊ธฐ