Golang 함수

이백이·2022년 7월 7일

Golang

목록 보기
8/9

함수는 여러 문장을 한번에 실행할 수 있도록 하는 코드 묶음이다.
기본적으로 func 함수명(parameters) {...} 형태를 갖춘다.
c와는 다르게 파라미터를 적을 때 파라미터명 뒤에 데이터 타입을 작성한다.

func hi(name string) {
	println("hi", name)
}

파라미터를 작성할 때 Pass by Value와 Pass by Reference 2가지 방법이 있다.
Pass by Value 는 파라미터의 값만 활용하여 파라미터 원본을 복사하여 사본을 활용한다고 생각하면 된다.
Pass by Reference 는 파라미터 원본을 가져다 활용한다.
아래 두 예제에서 각각 Pass by Value와 Pass by Reference를 활용하였다.

package main
func main() {
	name := "Tom"
	hi(name)
    println(name)
}

func hi(name string) {
	println("hi", name)
    name = "Sam"
}

위 예제에서는 값을 복사하여 사본을 활용하기 때문에 hi 함수에서 name의 값을 변경하였지만 사본의 값을 변경했기에 원본인 main 함수의 name의 값은 바뀌지 않는다.

package main
func main() {
	name := "Tom"
	hi(&name)
    println(name)
}

func hi(name *string) {
	println("hi", *name)
    *name = "Sam"
}

Pass by Reference는 원본을 그대로 활용하기 때문에 hi 함수 안에서 바꾼 name 값이 main 함수 안에서도 바뀐 것을 확인할 수 있다.

함수 리턴 값을 다루기 위해서는 parameter 괄호와 { 사이에 반환하려는 값의 데이터 타입을 적어주면 된다.

func add(a int, b int) int {
	return a + b
}

여러 값들을 리턴하고 싶다면 리턴하려는 데이터 타입을 나열하여 적으면 된다.

func add(a int, b int) (int, string) {
	return a + b, "done"
}

리턴 값을 적는 또 하나의 방법이 있다.
바로 리턴하려는 변수 명을 데이터 타입 앞에 적는 방법이다.

func add(a int, b int) (c int) {
	c = a + b
	return 
}

리턴하려는 값이 c라고 미리 선언하고 c 값을 변경하면 된다. 리턴하는 값을 return 뒤에 나열하지 않더라도 return을 쓰지 않으면 에러가 발생한다.
리턴하는 값을 한눈에 알 수 있다는 장점이 있다.

profile
아직 모른다

0개의 댓글