테스트 환경
go playground 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 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 |