반응형
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 |