Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- open ai
- awskrug
- AI
- dockerfile
- 파이썬
- 명령어
- AI챗봇
- 3티어 아키텍처
- nexus
- it기사
- 리눅스
- AWS
- Linux
- go
- docker
- maven
- aws사용자모임
- terraform
- python
- Azure
- 변수
- 함수
- 클라우드
- 표준 라이브러리
- git hub
- 사용자 계정 관리
- 애저
- jenkins
- 프로세스 관리
- GIT
Archives
- Today
- Total
We are Architect
함수(9) 본문
* 함수
- 어떤 값을 넣으면 결과를 출력할 수 있도록 도와주는 기능.
- 컴퓨터에서 반복되는 작업을 실행할 때 유용하게 사용하려고 만들어짐.
- 함수는 코드 블록이다. 즉 프로그램에서는 어떤 코드를 묶어놓은 단위이다.
* go에서 함수 정의
// func : 함수 키워드 정의.
// ADD : 함수 이름.
// (a int, b int) : 매개변수(파라미터). 즉 함수에 입력될 값.
// int : 함수의 결과가 반환되는 타입.
// { } : 함수 코드 블록.
func ADD(a int, b int) int {
// a + b의 값을 반환합니다.
return a + b
}
* 함수 예제 - 1
package main
import (
"fmt"
)
func Add(a int, b int) int {
return a + b
}
func main() {
c := Add(3,6)
fmt.Println(c)
}
- 결과 값 출력
* 함수 예제 - 2
package main
import (
"fmt"
)
//Divide 라는 함수를 정의
//(a, b int) : 입력 값이 int 타입으로 들어간다.
//(int bool) : 두 개의 반환(return)값의 타입을 적어줌.
func Divide(a, b int) (int, bool) {
// 만약에 b가 0과 같냐?
if b == 0{
// 0이면 첫번째 값을 0, 두번째 값을 false로 반환
return 0, false
}
// 0이 아니면 a / b, true 반환
return a / b, true
}
func main() {
// 9, 3이 Divide()로 push됨 > c, bool 값이 반환.
c, success := Divide(9, 3)
fmt.Println(c, success)
// 9, 0이 push됨 > d, bool 값이 반환.
d, success := Divide(9, 0)
fmt.Println(d, success)
}
- 결과 값 출력
* 함수 예제 - 3
package main
import (
"fmt"
)
//Divide 라는 함수를 정의
//(a, b int) : 입력 값이 int 타입으로 들어간다.
//(int bool) : 두 개의 반환(return)값의 타입을 적어줌.
func Divide(a, b int) (result int, success bool) {
// 만약에 b가 0과 같냐?
if b == 0{
// 0이면 첫번째 값을 0, 두번째 값을 false로 반환
result = 0
success = false
// 반환 타입 부분에 변수 선언을 해서 리턴에 반환되는 변수 선언 x.
return
}
// 0이 아니면 a / b, true 반환
result = a / b
success = true
// 반환 타입 부분에 변수 선언을 해서 리턴에 반환되는 변수 선언 x.
return
}
func main() {
// 9, 3이 Divide()로 push됨 > c, bool 값이 반환.
c, success := Divide(9, 3)
fmt.Println(c, success)
// 9, 0이 push됨 > d, bool 값이 반환.
d, success := Divide(9, 0)
fmt.Println(d, success)
}
- 결과 값 출력
- 위에 예제와 값이 같다. 단지 리턴 변수 선언을 함수 반환 타입 부분에 해줬을 뿐.
* 재귀 호출
- 자기가 자기자신을 다시 부르는 함수.
- Recursive Function이라고 한다.
- 원래 호출된 곳으로 돌아간다.
- 재귀 호출은 스택( LIFO: Last In, First Out )을 사용한다. 가장 먼저 들어온 것이 제일 나중에 나간다. 그리고 함수 실행이 끝나면 그 정보가 스택에서 제거된다.
- 재귀 호출 함수 사용시 탈출 조건을 명시해줘야 한다.
- 밑에서는 if문 부분에 조건으로 탈출.
package main
import "fmt"
func printNO(n int) {
if n == 0 {
return
}
fmt.Println(n)
printNO(n-1) // 다시 printNo를 호출
fmt.Println("After", n)
}
func main() {
printNO(3)
}
- 결과 값 출력
'Programing > Go' 카테고리의 다른 글
if 문(11) (0) | 2025.01.11 |
---|---|
상수(10) (0) | 2025.01.10 |
연산자(8) (0) | 2025.01.08 |
fmt 패키지를 통한 표준 입출력(7) (0) | 2025.01.06 |
변수 - 3(6) (0) | 2025.01.05 |