๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Data Base/Go

[์‰ฝ๊ณ  ๋น ๋ฅธ Go ์‹œ์ž‘ํ•˜๊ธฐ] #1.3 Functions part One

by ์ฝ”๋”ฉํ•˜๋Š” ๋ถ•์–ด 2021. 10. 26.
๋ฐ˜์‘ํ˜•

[์ถœ์ฒ˜ - Nomad Coders]

 

function์˜ ๊ธฐ๋ณธ์ ์ธ Type์€ string ์ด๋‚˜ bool(Boolean) ์ด๋‹ค.

๊ทธ ์™ธ์— ์ˆซ์ž๋ฅผ ์œ„ํ•œ ์—ฌ๋Ÿฌ ์ข…๋ฅ˜์˜ Type๋“ค์ด ์žˆ๋‹ค.

 

 

์ด๋ฒˆ ๊ฐ•์˜์—์„  int๋ฅผ ์‚ฌ์šฉํ•ด ๋ณผ ๊ฒƒ์ด๋‹ค.

 

๋จผ์ € ๊ณฑ์…ˆ์„ ์œ„ํ•œ ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ๋ณด์ž.

Type ์ง€์ •์„ ์•ˆ ํ•ด์ค˜์„œ ์—๋Ÿฌ๊ฐ€ ๋œฌ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

TypeScript๋ฅผ ์‚ฌ์šฉํ•œ ๋ถ„๋“ค์ด๋ผ๋ฉด ์ต์ˆ™ํ•  ๊ฒƒ์ด๋‹ค.

 

์—๋Ÿฌ๊ฐ€ ๋œจ์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„  ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค.

package main

import "fmt"

func multiply(a int, b int) int {  // (a, b int) ๋กœ๋„ ๊ฐ€๋Šฅ
  return a * b
}

func main() {
  fmt.Println(multiply(2, 2))
}

go run ํ•˜๋ฉด ์ถœ๋ ฅ์ด ์ž˜ ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

 

๊ทธ๋ฆฌ๊ณ  return์˜ Type ๊ฐ’๋„ ๋ช…์‹œํ•ด์ค˜์•ผํ•œ๋‹ค.

์•ˆํ•ด์ฃผ๋ฉด ์—๋Ÿฌ๊ฐ€ ๋œฌ๋‹ค!

 

 

 

๐Ÿ‘ฟ multiple value๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” function์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•

๋˜, function์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ return ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.

(์ด๊ฒƒ์ด Go์˜ ์•„์ฃผ ์š”์ƒํ•œ(?) ๋ถ€๋ถ„์ด๋ผ๊ณ  ํ•œ๋‹ค.)

 

package main

import (
  "strings" // Go์—์„œ๋Š” ๋ชจ๋“ ๊ฒŒ package๋‹ค.
)

func lenAndUpper(name string) (int, string) { // ๋‘ ๊ฐ€์ง€ Type์œผ๋กœ return ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.
  return len(name), strings.ToUpper(name)
}

func main() {
  totalLength, upperName := lenAndUpper("nico")
}

 

 

ํ•˜์ง€๋งŒ Go์—์„œ๋Š” ๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด ์—๋Ÿฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

 

๊ทธ๋ž˜์„œ ์•„๋ž˜์ฒ˜๋Ÿผ ์‚ฌ์šฉ์„ ํ•ด์•ผ ์—๋Ÿฌ๊ฐ€ ์•ˆ์ƒ๊ธด๋‹ค.

 

์ถœ๋ ฅ์ด ์ž˜ ๋œ๋‹ค.

 

 

 

 

๋งŒ์ผ 2๊ฐœ์˜ return ๊ฐ’์„ ๋ฐ›๋„๋ก ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ–ˆ๋Š”๋ฐ 1๊ฐœ์˜ return ๊ฐ’๋งŒ ๋ฐ›๊ณ ์‹ถ๋‹ค๋ฉด

_(underscore)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

_(underscore)๋Š” ๋ฌด์‹œ๋œ value๋‹ค.

func main() {
  totalLength, _ := lenAndUpper("nico")
  fmt.Println(totalLength)
}

1๊ฐœ์˜ return ๊ฐ’๋งŒ ๋ฐ˜ํ™˜๋จ.

 

 

 

 

๋˜ ํ•˜๋‚˜ ์•Œ์•„์•ผ ํ•  ๊ฒƒ์€ arguments๋‹ค.

์—ฌ๋Ÿฌ ๊ฐœ์˜ arguments๋ฅผ ํ˜ธ์ถœํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ... ์„ ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค.

package main

import (
  "fmt"
)

func repeatMe(words ...string) {
  fmt.Println(words)
}

func main() {
  repeatMe("nico", "lynn", "dal", "marl", "flynn")
}
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€