Skip to content

Latest commit

 

History

History
75 lines (64 loc) · 2.65 KB

functions.md

File metadata and controls

75 lines (64 loc) · 2.65 KB

Functions

Function의 특징

  • 자유로운 함수 선언의 위치
    • Go는 함수 선언의 위치 제약이 없다.
      • C/C++과 같은 언어는 함수 선언의 위치가 중요하다. C/C++의 언어에서는 main() 함수에서 특정 함수를 호출하기 위해서는 호출하려는 함수가 main()함수 이전에 선언 되어야 한다.
  • Mutiple Return Value
    • 여러개의 반환값을 리턴할 수 있다.
      • 다른 언어에서는 여러개의 반환값을 리턴하기 위해서는 referencem pointer type, class 혹은 struct의 인스턴스를 활용해야 한다.
      • 문법적으로 여러 return value를 리턴이 가능하기에 코드가 타언어에 비해 간결하다.

Syntax

  • Function Declaration
    func <functionName> () {...}
func hello() {
  fmt.Println("Baby Tiger is Here!")
}

func main() {
  hello()
}

함수가 정의된 시작 줄에서 여는 중괄호({)를 써주어야 한다.
줄바꿈을 하여 { 를 써주게 되면 컴파일 에러가 발생한다.

  • Parameters
    func <funcName>(<param1> <Type>, <param2> <Type>) (returnValue's_Type)
func main{
  r := sum(1000, 90)
  fmt.Println(r) // 1090
}

func sum(a int, b int) int {
  return a + b
}

변수를 선언할 때 처럼 매개변수의 자료형과 리턴값의 자료형 또한 뒤에 붙여준다.

  • Multiple return values
func <funcName>(<param1> <Type>, <param2> <Type>) (<returnVal1's_Type>, <returnVal2's_Type>){
      return <returnVal1>, <returnVal2>
}
func sumAndDiff(v1 int, v2 int) (int, int) { 
      return v1 + v2, v1 - v2
} // (int, int)는 두 개의 integer 값이 리턴되는 것을 의미

func main(){
      sum, diff := sumAndDiff(8, 4)
      fmt.Println(sum, diff) // 12 4
}  

반환 값이 여러 개일 경우 , 로 구분해준다.
() 괄호 안에 리턴값 자료형을 , 로 구분하여 지정해준다.
리턴값은 함수에서 지정한 순서대로 리턴된다.
만약 리턴값이 여러개인데도 불구하고 리턴값을 받을 변수 하나만 적으면 첫 번째 리턴값만 저장된다.
Blank identifier을 통해 원하는 값만 리턴 가능하다.

func sumAndDiff(v1 int, v2 int) (int, int) { 
      return v1 + v2, v1 - v2
} 
func main() {
      _, diff := sumAndDiff(8, 8) // sum은 제외하고 diff 값만 받고 싶을 때
      fmt.Println(diff) // 4
}

_ 를 통해 특정 값을 생략