Go Tutorial

November 19, 2016

CodeSchool에서 3일간 전 코스를 무료로 공개하는 이벤트가 진행중(작성 시점)입니다. 이 글은 그 중에서 Golang에 대한 튜토리얼(On Track With Golang)을 수강하며 정리한 노트입니다.

Go?

구글이 2007년에 만든 오픈소스 언어이며, 간단하고 효율적인 코드를 작성할 수 있게 해줌.

시스템 프로그래밍

Go가 좋은 선택이 될 수 있음

Tips

조건문

변수

Type Inference

hoge := "string"

// 위와 아래는 동일한 결과

var hoge string
hoge = "string"

Manual Type Declaration

Common Data Type

함수

func <method signiture> <return type> {
}

// 예를 들자면,
func hoge(name string) bool {
  return false
}

다중 반환

func hello() (string, int) {
  return "hello", 0
}

result, state := hello()

Zero values

반복문

for <init>; <condition>; <post> {}
for <condition> {}
for {}

Array & Slices

Array

func main() {
  var arr [3]string

  hoge(arr)
}

func hoge(arr [3]string) bool {
  // ...
}

Slices

for i := range arr {
  // i will be index
  arr[i]
}

for _, element := range arr {
  el
}

Struct

type <struct name> struct {
  <attr_name> <attr_type>
  // ...
}

func (<variable name> <struct name>) <method signiture> <return type> {
  // ...
}

func main() {
  // init struct
  ins := <struct name>{attr1: value, attr2: value...}
}

Interface

type <interface name> interface {
  <method signiture> <return type>
}

Package

goroutine

// task의 정의
func (e Hoge) task(*wg sync.WaitGroup) {
  // some logic...
  wg.Done()
}

// 실행 코드
wg := sync.WaitGroup

wg.Add(number)

for _, el := range arr {
  go arr.task(&wg)
}

wg.Wait()

Conclusion