go언어 함수는 선언하는 모습이 특이해서 한 개 이상의 반환 값을 사용할 수 있습니다.

예를 들어 두 개의 변수 값을 전달하고 두 변수의 값을 서로 교환해서 반환하는 함수를 어떻게 작성할까요?

C언어에서는 당연히 포인터를 사용할 것입니다.


void swap( int *ptr_a, int *ptr_b){

    int temp;


    temp = *ptr_a;


    *ptr_a = *ptr_b;

    *ptr_b = temp;

}


int main( void){


    int a = 3;

    int b = 4;


    swap( &a, &b);

    printf( "%d %d\n", a, b);

}


그러나 go 언어는 매우 간단합니다. 포인터를 사용하지 않기 때문에 반드시 변수를 사용할 필요도 없지요.


package main

import "fmt"

func main(){

swap := func( x, y int)(int, int){
return y, x
}

fmt.Println( swap( 1, 2))
}


어떻습니까? 재미있지 않나요?