package main
import "fmt"
func vals() (int, int) {
return 3, 7
}
func main() {
a, b := vals()
fmt.Println(a)
fmt.Println(b)
_, c:=vals()
fmt.Println(c)
}
vals 함수는 두 개의 int 값을 반환한다. 개발자는 multiple assignment를 이용해서 여러 개의 값을 할당할 수 있다. 만약 반환 값을 할당하고 싶지 않다면 언더바(_)를 이용하면 된다.
Go 언어로 프로그램을 개발한다면, 많은 경우 에러와 값을 반환하기 위해서 multiple return values를 사용 할 것이다. 아래는 처리 값과 error를 함께 반환하는 예제 프로그램이다.
#include <stdio.h>
int divide(int a, int b) {
return a / b;
}
int main(int argc, char **argv) {
int a = 5;
int b = 0;
if (b == 0) {
printf("분모로 0을 사용 할 수 없습니다.\n");
} else {
printf("a / 4 = %d\n", a/b);
}
return 0;
}
위의 C 코드와 Go 코드를 비교해 보면, Go 코드가 훨씬 깔끔하다는 걸 느낄 수 있을 것이다. 이유는 Go의 코드가 자기 완결성을 가지고 있기 때문이다.
다음 예제 : Variadic Function
예제로 살펴보는 Go : Multiple Return Values
package main import "fmt" func vals() (int, int) { return 3, 7 } func main() { a, b := vals() fmt.Println(a) fmt.Println(b) _, c:=vals() fmt.Println(c) }package main import ( "fmt" "errors" ) func divide(a, b int) (int, error) { if b == 0 { return 0, errors.New("분모로 0을 사용 할 수 없습니다.") } return a/b, nil } func main() { res, err := divide(4, 0) if err != nil { fmt.Println("ERROR : ", err.Error()) } else { fmt.Println("4 /2 = ", res) } }#include <stdio.h> int divide(int a, int b) { return a / b; } int main(int argc, char **argv) { int a = 5; int b = 0; if (b == 0) { printf("분모로 0을 사용 할 수 없습니다.\n"); } else { printf("a / 4 = %d\n", a/b); } return 0; }Recent Posts
Archive Posts
Tags