728x90
기본 형식
// 함수 정의
func 함수명(매개변수 매개변수타입-여러개 가능) 리턴타입 {
실행코드
return 리턴값
}
----------------------------------------------
// 예시 코드
package main
import (
"fmt"
)
func add(x int, y int) int {
return x+y
}
// 함수 호출
func main() {
num := add(2,4)
fmt.Println(num)
}
------------------------------------------------
// 실행
$ go run ./main.go
6
- 매개변수가 필요 없는 경우 작성하지 않을 수 있습니다.
- 리턴타입은 반환되는 값이 없는 경우 사용하지 않을 수 있습니다.
여러개 반환 형식
// 함수 정의
func 함수명(매개변수 매개변수타입-여러개 가능) (리턴타입1, 리턴타입2-여러개 가능) {
실행코드
return 리턴값1, 리턴값2
}
----------------------------------------------
// 예시 코드
package main
import (
"fmt"
)
func calc(x int, y int) (int, int) {
return x+y, x-y
}
// 함수 호출
func main() {
num1, num2 := calc(4,2)
fmt.Println(num1, num2)
}
------------------------------------------------
// 실행
$ go run ./main.go
6 2
변수로 반환 형식
// 함수 정의
func 함수명(매개변수 매개변수타입-여러개 가능) (리턴변수명 리턴타입-여러개 가능) {
실행코드
리턴변수에 대입
return (리턴 변수에 대입하였으므로 return만 작성)
}
----------------------------------------------
// 예시 코드
package main
import (
"fmt"
)
func add(x int, y int) (val int) {
val = x + y
return
}
// 함수 호출
func main() {
num := add(4,2)
fmt.Println(num)
}
------------------------------------------------
// 실행
$ go run ./main.go
6
함수 내부의 변수 사용 범위
- 함수 내부의 변수는 외부에서 사용할 수 없음
// 예시 코드
package main
import (
"fmt"
)
func myName() string {
// 함수 내부에서 변수선언
name := "golang"
return name
}
// 함수 호출
func main() {
fmt.Println(name) //에러
}
------------------------------------------------
// 실행
$ go run ./main.go
./main.go::: undefined: name
// 예시 코드
package main
import (
"fmt"
)
func addOne(num int) {
fmt.Println("addOne: ", num) //2
num += 1
}
// 함수 호출
func main() {
num := 1
addOne(num)
fmt.Println("main: ", num) //여기 num은 main 함수의 num 이므로 2가 아닌 1이 출력됨
}
------------------------------------------------
// 실행
$ go run ./main.go
addOne: 2
main: 1
포인터를 매개 변수로 사용 (값을 참조)
// 예시 코드
package main
import (
"fmt"
)
func addOne(num *int) {
*num += 1 // 넘어온 주소에 값을 넣음
}
// 함수 호출
func main() {
num := 1
addOne(&num) // main함수의 num 변수 주소를 addOne 함수에 넘겨줌
fmt.Println("main: ", num) //주소의 값이 변경되었으므로 2가 출력
}
------------------------------------------------
// 실행
$ go run ./main.go
main: 2
- 포인터를 잘 이해한 상태에서 사용하기를 권합니다.
728x90
'IT > GO' 카테고리의 다른 글
Go 언어 스터디 - 함수의 기능(가변인자) (0) | 2023.07.16 |
---|---|
Go 언어 스터디 - 함수의 기능(defer) (0) | 2023.07.16 |
GO 언어 스터디 - 인터페이스 (0) | 2023.07.15 |
GO 언어 스터디 - 메서드 (0) | 2023.07.15 |