Programming Language/go

함수 사용하기

김크리 2022. 8. 23. 07:25

테스트 환경

// You can edit this code! // Click here and start typing. package main import "fmt" func main() { fmt.Println("Hello, 世界") } About the Playground The Go Playground is a web service that runs on go.dev's servers. The service receives a Go program, vets

go.dev](https://go.dev/play/)

[Go Playground - The Go Programming Language

// You can edit this code! // Click here and start typing. package main import "fmt" func main() { fmt.Println("Hello, 世界") } About the Playground The Go Playground is a web service that runs on go.dev's servers. The service receives a Go program, vets

go.dev](https://go.dev/play/)

  • go version 1.9
package main

import "fmt"

func main() {
    hello()
    sum, diff, mul, div := multiCalculation(1, 2)
    fmt.Println(sum, diff, mul, div)
}

func hello() {
    fmt.Println("Hello, world")
}
func multiCalculation(a int, b int) (int, int, int, int) {
    return a + b, a - b, a * b, a / b
}
  • 함수 정의

    • 함수 정의에 대한 위치 제약이 없다.
    • 리턴 값은 여러개 사용할 수 있다.
      func 함수명(매개변수명 자료형) 리턴값_자료형{
      …내용
      }
  • 함수의 활용

  • 매개변수의 개수를 정하지 않고 유동적으로 변하는 가변인자를 사용할 수 있다.
    func 함수명(매개변수명 …자료형) 리턴값_자료형{
    …내용
    }

    • 함수를 변수에 저장하여 사용할 수 있다.
      var 변수명 func(매개변수명 자료형) 리턴값_자료형 = 함수명
  • 익명 함수로 사용하여 바로 호출 할 수 있다.

  • 클로저(closure)를 지원한다.

    • 함수 안에서 함수를 선언 및 정의 할 수 있다.
    • 바깥쪽 함수에서 안쪽 선언된 변수에 접근할 수 있다.
package main

import "fmt"

func main() {
    a, b := 3, 5
    sumX := func(x int) int {
        return a + b + x
    }
    r := sumX(1)
    fmt.Println(r)
}
  • 함수가 끝나기 직전에 실행하는 지연호출을 지원한다.
package main

import "fmt"

func main() {
    defer world()
    hello()
    hello()
    hello()
}

func world() {
    fmt.Println("world")
}
func hello() {
    fmt.Println("Hello,")
}
  • 패닉과 복구를 사용하여 예외처리를 구현할 수 있다.(일종의 try-catch, exception/throw)
package main

import "fmt"

func main() {
    f()
    fmt.Println("Hello, world")
}
func f() {
    defer func() {
        s := recover()
        fmt.Println(s)
        fmt.Println("recover & defer test")
    }()

    panic("ERROR!")
}

'Programming Language > go' 카테고리의 다른 글

파일 처리하기  (0) 2022.09.12
유니코드와 UTF-8  (0) 2022.09.05
Print Hello world, 표준 입출력  (0) 2022.07.13
Go 언어 프로그래밍 - SOLID  (0) 2021.08.11
Go 언어 프로그래밍 - 채널과 컨텍스트  (0) 2021.08.09