개발일기

Go - 함수의 정의 및 사용법 본문

프로그래밍 언어/Go

Go - 함수의 정의 및 사용법

Flashback 2022. 8. 3. 20:53
728x90
반응형

1. 함수 정의

Go에서 함수를 선언할 때는, 다른 언어에서 사용하는 키워드 function이 아니라 func를 사용하여 함수를 정의한다.

func test() {
	...
}

 

2. 함수의 값 반환

func test(a int, b int) int { // 매개변수 괄호 뒤에 반환할 값의 자료형을 써준다.
	...
    return a + b
}

함수에 반환값이 존재할 경우, 매개변수를 나열한 괄호 뒤에 반환할 값의 자료형을 써주면 된다. return에 들어가는 부분의 자료형이 위와 같이 정수형이 아닌 경우 오류가 발생한다.

 

 

2-1. 여러개의 값 반환하기

다른 언어들과는 다르게 다양한 값을 반환할 수 있다. 다수의 값을 반환하려면 반환할 자료형을 괄호로 묶은 후, 순서대로 나열한다. 그 후, return에 반환할 값 또는 변수들을 차례대로 입력한다.

package main

import "fmt"

func main() {
	var add, sub int = test(3, 5) // add와 sub에 각각의 반환값이 순서대로 정의된다.
	fmt.Println(add)
	fmt.Println(sub)
}

func test(a int, b int) (int, int) { // 반환할 자료형을 순서대로 나열한다.
	return a + b, a - b // 반환할 값 또는 변수들을 순서대로 나열한다.
}

 

 

2-2. 반환할 값 생략

package main

import "fmt"

func main() {
	var add, _, multi int = test(3, 5) // _를 입력하면 해당 순서의 반환값을 생략된다.
	fmt.Println(add)
	fmt.Println(multi)
}

func test(a int, b int) (int, int, int) { // 반환할 자료형을 순서대로 나열한다.
	return a + b, a - b, a * b // 반환할 값 또는 변수들을 순서대로 나열한다.
}

_를 사용하면 해당 순서에 반환될 반환값을 생략할 수 있다. 즉, 2번째 순서에 반환될 뺄셈의 값은 생략된다.

 

 

2-3. 매개변수에 가변인자 사용

함수의 매개변수에 총 몇개의 매개변수가 들어가게 될지 모르는 경우, ...를 붙여 가변인자로 지정한 후에 사용한다.

package main

import "fmt"

func main() {
	a := test(3, 4, 5)
	fmt.Println("합 : ", a)
}

func test(n ...int) int {
	// 변수명 선언 후, 자료형 앞에 ...를 붙여 변수 n을 가변인자로 지정한다.
    
	total := 0
	for key, value := range n {
		total += value
		fmt.Println(key, value)
	}

	return total
}

/*
	실행결과 : 
	0 3
	1 4
	2 5
	합 :  12
    
	Program exited.
*/

위의 함수는 for - range를 사용하여 들어온 매개변수를 합친 후, 반환하는 함수이다. 반복문을 사용할 때, key와 value값이 변수 n을 반복하면서 생성되는데, key라는 변수를 선언하고, 사용하지 않을 경우 에러가 발생한다. 이때, _를 사용하면 불필요한 부분을 생략하고, 함수를 진행시킬 수 있다.

 

package main

import "fmt"

func main() {
	a := test(3, 4, 5)
	fmt.Println("합 : ", a)
}

func test(n ...int) int {
	// 변수명 선언 후, 자료형 앞에 ...를 붙여 변수 n을 가변인자로 지정한다.
    
	total := 0
	for _, value := range n {
		// 불필요한 key 생략
		total += value
	}

	return total
}

/*
	실행결과 : 
	합 :  12
    
	Program exited.
*/

 

 

2-4. 슬라이스를 매개변수에 대입

변수를 쭉 나열하는 것 뿐만 아니라 슬라이스를 매개변수에 대입하여 사용할 수 있다.

package main

import "fmt"

func main() {
	arr := []int{1, 2, 3}
	test(arr...) // 인자값에 슬라이스
}

func test(n ...int) {
	fmt.Println(n)
}

/*
	실행결과 :
	[1 2 3]

	Program exited.
*/

arr이라는 슬라이스 변수를 test라는 함수 선언 부분의 인자값으로 넣을때, 변수명 뒤에 ...을 붙여준다. ...를 붙여주면 test함수에서는 슬라이스 값을 순서대로 넘겨주어 위와 같은 실행결과가 나오게 된다.

 


참고 사이트 : 

https://www.golangprograms.com/go-language/functions.html#:~:text=What%20is%20Function%20in%20Golang,code%20into%20a%20single%20component.

 

How to Define and Call a Function in Golang - golangprograms.com

What is Function in Golang A function is a group of statements that exist within a program for the purpose of performing a specific task. At a high level, a function takes an input and returns an output. Function allows you to extract commonly used block o

www.golangprograms.com

 

https://dev-yakuza.posstree.com/en/golang/function/

 

[Golang] Function basic

Let’s see how to define and use Function in Golang.

dev-yakuza.posstree.com

 

728x90
반응형

'프로그래밍 언어 > Go' 카테고리의 다른 글

Go - panic() / recover() 예외처리  (0) 2022.08.09
Go - defer 호출이란?  (0) 2022.08.07
Go - Map이란?  (0) 2022.03.29
Go - Slice의 len과 cap  (0) 2022.03.16
Go - 배열 사용법  (0) 2022.03.15
Comments