예제로 살펴보는 Go : Map

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

예제로 살펴보는 Go : Range

range는 배열, map, 슬라이스와 같은 다양한 데이터 스트럭처로부터 데이터를 순환하면서 가져오기 위해서 사용한다.6~11 슬라이스 nums의 값을 range로 가져와서 더하는 코드다. 배열 역시 같은 방식으로 값을 가져올 수 있다. range를 이용하면 두 개의 값을 반환한다. 첫번째 값은 key이고 두번째 값은 value다. 따라서 num 에는 슬라이스의 값이 저장된다. 13 ~ 17 배열과 슬라이스의 경우 range의 첫번째 값으로 인덱스(index)가 반환된다. 0부터 +1씩 증가할 것이다.

  • yundream
  • 2016-01-01 10:14:25
  • 161095
  • tags:

예제로 살펴보는 Go : Functions

함수(Functions)는 Go의 핵심 요소다. 몇 개의 장에 걸쳐서 함수를 만들고 사용하는 법을 살펴보도록 하겠다. plus 함수는 두 개의 int형 매개변수를 받고, int형 값을 반환한다. 함수의 형태가 C/C++ 과는 약간 다르다. C/C++의 경우 반환 값이 함수 이름 앞에 나오는데, Go는 매개변수 뒤에 나온다. ruby 같은 언어들은 return을 사용하지 않아도 자동으로 가장 마지막 값을 반환하지만, Go 언어는 그런 거 없다. 반드시 return 문을 이용해서 반환할 값을 명시해줘야 한다.

  • yundream
  • 2016-01-01 11:16:22
  • 176898
  • tags:

Web servie Test

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

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

  • yundream
  • 2016-01-01 16:32:21
  • 171689
  • tags:

예제로 살펴보는 Go : Variadic Functions

Variadic Function은 변수의 개수가 가변적인 함수를 의미한다. 예를들어 fmt.Println가 대표적인 Variadic 함수다.예제 코드에 있는 sum 함수를 보자. 이 sum 함수는 여러 개의 매개변수를 받아서 더하고 그 결과를 출력하는 일을 한다. 여러개의 변수를 받는 방법은 간단하다. 데이터 타입 앞에 "..."을 붙여주기만 하면 된다. sum 함수내에서 매개변수는 슬라이스로 처리하면 된다.15, 16에 sum 함수의 사용 코드를 보자. 매개변수의 개수에 신경쓰지 않고 자유롭게 입력 할 수 있다. Variadic 함수에서 매개변수는 슬라이스로 다루기 때문에, 19 줄에서 처럼 슬라이스를 직접 사용해도 된다.

  • yundream
  • 2016-01-01 18:00:04
  • 108502
  • tags:

About Us

예제로 살펴보는 Go : Closures

Go는 클로져(혹은 anonymous function이라고 부르는) 지원한다. 익명 함수(Anonymous function)는 코드 중간에 이름 없이 함수를 정의하기 위해서 사용한다. 이름이 없기 때문에 외부에서 사용 할 수 없다. 실용적인 관점에서는 데이터가 오직 하나의 메서드만 가지고 있을 때, 데이터가 정의된 함수 내에서 처리 하고자 할 때 사용한다. 데이터와 데이터를 조작하는 코드를 같은 코드 영역에 묶을 수 있다. 코드의 흐름을 깨지않으며, 가독성도 높아진다. 데이터의 처리에 두 개 이상의 함수가 사용 될 경우 익명 함수는 그리 좋은 선택이 아니다.

  • yundream
  • 2016-01-02 06:19:43
  • 86915
  • tags:

예제로 살펴보는 Go : Recursion

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

  • yundream
  • 2016-01-02 06:33:02
  • 51527
  • tags:

예제로 살펴보는 Go : Pointer

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

  • yundream
  • 2016-01-02 09:20:47
  • 129450
  • tags: