Function

func

func 함수이름 (매개변수이름 매개변수형) 반환형
CODE
RESULT
CODE
func sum(a,b int) int{
return a+b
}
func main(){
a:=2
b:=8
fmt.Println(sum(a,b))
}
RESULT
10

Pass by value

인자의 값을 복사해 전달

CODE
RESULT
CODE
func minus(a int){
a-=3
fmt.Println("a : ",a)
}
func main(){
a:=5
minus(a)
fmt.Println("a : ",a)
}
RESULT
a : 2
a : 5

Pass by reference

참조를 위한 주소값을 매개변수로 전달

CODE
RESULT
CODE
func minus(a *int){
*a-=3
fmt.Println("a : ",*a)
}
func main(){
a:=5
minus(&a)
fmt.Println("a : ",a)
}
RESULT
a : 2
a : 2

가변 인자 함수

slice 를 매개변수로 전달

First Tab
Second Tab
First Tab
func list(slice ...int){
for _, val:=range slice{
fmt.Println(val)
}
}
func main(){
nums := []int{10,20,30}
list(nums...)
}
Second Tab
10
20
30

익명 함수

함수의 이름이 없으나 변수 이름을 함수의 이름처럼 사용

CODE
RESULT
CODE
a := func(){
fmt.Println("Hi")
}
a();
RESULT
Hi

type

함수의 원형을 정의

CODE
RESULT
CODE
type sumNum func(int, int) int
func sNum(f sumNum, a int, b int) int{
result:=f(a,b)
return result
}
func main(){
plus:=func(x int, y int) int{
return x+y
}
result := sNum(plus,2,8)
fmt.Println(result)
}
RESULT
10

* Notice

slice는 function의 매개변수로 넘겨도 포인터가 포함되어서 값이 변함

CODE
RESULT
CODE
func minus(a []int){
a[0]=0
fmt.Println("a : ",a)
}
func main(){
a:= []int{1,2,3,4,5}
minus(a)
fmt.Println("aa : ",a)
}
RESULT
a : [0 2 3 4 5]
aa : [0 2 3 4 5]