예제로 살펴보는 Go : Methods 

Go는 클래스를 지원하지 않는다. 대신 구조체에 메서드를 연결 하는 식으로 클래스 처럼 사용 할 수 있다.rect라는 이름의 구조체를 정의 하고 있다. 이 스트럭쳐는 width와 height 두 개의 변수를 가지고 있다.9 줄에서 rect 구조체에 대한 메서드를 정의했다. 메서드는 recever type을 이용해서 특정 구조체에 연결하는 방식으로 정의 할 ...

예제로 살펴보는 Go : Structs 

Go의 스트럭쳐는 여러 개의 필드로 구성된 데이터 타입이다. 데이터의 그룹이나 레코드를 다루는데 유용하다.name과 age 두 개의 필드를 가지는 person 스트럭처를 만들었다. Go는 대부분의 객체지향 언어들이 가지는 class 키워드를 제공하지 않는다. 대신 struct를 이용해서 객체지향을 구현 할 수 있다. 객체지향을 지원하지 않는 C에서 stru...

예제로 살펴보는 Go : Pointer 

Go는 포인터(pointer)를 제공한다. Go에서 모든 데이터는 값에 의한 전달(passed by value)로 작동한다. 이는 전달할 데이터를 복사한다는 의미다. 포인터는 값을 전달하지 않고, 레퍼런스(데이터가 저장된 위치)를 전달한다. 예제 코드에는 zeroval과 zeroptr이라는 두 개의 함수가 있다. 두 함수 모두 int 타입의 매개변수를 받은...

예제로 살펴보는 Go : Recursion 

Go는 재귀함수(Recursive functions)를 지원한다. 아래는 고전적인 factorial 예제코드다.fact 함수는 fact(0)이 호출 될 때까지 자기 자신을 계속 호출한다.아래 코드는 slice의 원소를 뒤집는 일을 한다. 1. 슬라이스 크기의 1/2 만큼을 루프를 돌면서, 앞의 원소와 뒤의 원소를 서로 뒤바꾸는 식으로 작동한다. 1. 재귀...

예제로 살펴보는 Go : Closures 

Go는 클로져(혹은 anonymous function이라고 부르는) 지원한다. 익명 함수(Anonymous function)는 코드 중간에 이름 없이 함수를 정의하기 위해서 사용한다. 이름이 없기 때문에 외부에서 사용 할 수 없다. 실용적인 관점에서는 데이터가 오직 하나의 메서드만 가지고 있을 때, 데이터가 정의된 함수 내에서 처리 하고자 할 때 사용한다....

예제로 살펴보는 Go : Variadic Functions 

Variadic Function은 변수의 개수가 가변적인 함수를 의미한다. 예를들어 fmt.Println가 대표적인 Variadic 함수다.예제 코드에 있는 sum 함수를 보자. 이 sum 함수는 여러 개의 매개변수를 받아서 더하고 그 결과를 출력하는 일을 한다. 여러개의 변수를 받는 방법은 간단하다. 데이터 타입 앞에 "..."을 붙여주기만 하면 된다. ...

예제로 살펴보는 Go : Multiple Return Values 

Go 언어는 한 번에 두 개 이상의 값을 반환하는 걸 허용한다. 이 기능은 특히 처리 결과와 에러를 함께 리턴하기 위한 용도로 널리 사용한다.vals 함수는 두 개의 int 값을 반환한다. 개발자는 multiple assignment를 이용해서 여러 개의 값을 할당할 수 있다. 만약 반환 값을 할당하고 싶지 않다면 언더바(_)를 이용하면 된다. Go 언어로...

예제로 살펴보는 Go : Functions 

함수(Functions)는 Go의 핵심 요소다. 몇 개의 장에 걸쳐서 함수를 만들고 사용하는 법을 살펴보도록 하겠다. plus 함수는 두 개의 int형 매개변수를 받고, int형 값을 반환한다. 함수의 형태가 C/C++ 과는 약간 다르다. C/C++의 경우 반환 값이 함수 이름 앞에 나오는데, Go는 매개변수 뒤에 나온다. ruby 같은 언어들은 retur...

예제로 살펴보는 Go : Range 

range는 배열, map, 슬라이스와 같은 다양한 데이터 스트럭처로부터 데이터를 순환하면서 가져오기 위해서 사용한다.6~11 슬라이스 nums의 값을 range로 가져와서 더하는 코드다. 배열 역시 같은 방식으로 값을 가져올 수 있다. range를 이용하면 두 개의 값을 반환한다. 첫번째 값은 key이고 두번째 값은 value다. 따라서 num 에는 슬라...

예제로 살펴보는 Go : Map 

Map은 Go에 내장된 associative date type이다. 다른 언어에서는 hash(ruby)나 dicts(python)라고 부르기도 한다. 내장 함수인 make를 이용해서 비어있는 map을 만들 수 있다. make(map=value의 문법으로 값을 저장 할 수 있다. Println을 이용해서 map을 출력하면, map에 있는 모든 key/valu...