예제로 살펴보는 Go : Interfaces 

인터페이스(interface)는 메서드들의 이름의 집합이다. 메서드의 이름만 포함하고 있기 때문에, 구현이 필요하다. 어떤 도형의 면적과 둘레의 길이를 구하는 함수를 만든다고 가정해 보자. 도형은 삼각형, 사각형 혹은 원형이거나 다른 도형일 수도 있다. 어떤 도형이든지 이들은 면적을 구하는 area()와 둘레를 구하는 perim() 두 개의 메서드를 공통으...

예제로 살펴보는 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 에는 슬라...