본문 바로가기
Go-공부하기

Go. - Functions 2

by Thdnice 2022. 4. 25.
반응형

 

Go 에서 function 으로 arguments 를 passing 하는데, 기본적으로는 by value 를 사용한다. (즉 함수가 실행될때 주어지는 값을 복사한다.) 단 예외적으로 slice, array 등은 by reference 로 전달된다. (역시 C와 매우 흡사)

만약 single value 를 by referece로 전달하고 싶다면 포인터 (이 역시 C와 매우 흡사)로 전달해줘야 하는데, 그 문법이 유사하다 (referencing with "*", dereferencing with "&") 

 

package main

import "fmt"

func doubleAt( values []int, i int){
	values[i] *= 2
}

func double(n int){
	n *= 2
}

func doubleWithPointer(n *int){
	*n *= 2
}

func main() {
	values := []int{1, 2, 3, 4}
	doubleAt(values, 2)
	fmt.Println(values)

	val := 10
	double(val)
	fmt.Println(val)
	doubleWithPointer(&val)
	fmt.Println(val)
}

 

 간단하게 보면 Line 24 와 Line 26 의 차이가 같은 일ㅇ르 하는 함수에게 value로 인자가 전달될 때와, reference 로 인자가 전달될 떄의 차이라고 보면 된다.

 

반응형

'Go-공부하기' 카테고리의 다른 글

Go. - Function  (0) 2022.04.23
Go. - variables  (0) 2022.04.17
Go. Tutorial 2 - Echo Program 2  (0) 2020.12.22
Go. Tutorial 1 - Echo Program  (0) 2020.12.16