영감을 (inspire) 주고픈 개발 블로그

[프로그래밍 언어] Go언어 문법적 특징을 보자! -1 본문

카테고리 없음

[프로그래밍 언어] Go언어 문법적 특징을 보자! -1

inspire12 2016. 9. 16. 15:09

http://inspire12.tistory.com/9


Go 언어 파헤치기에 이어서 Go 언어의 문법적 특징을 비교하려고 한다. 


일단 기본적으로 C++와의 비교를 기준으로 할 생각이다. 


tour of go 를 하면서 필수적인 내용과 실습에서 내가 느낀 에로사항을 적을 것이기 때문에 

이 글을 읽고 튜토리얼을 진행해보는 걸 추천한다. (https://golang.org/#)


* 읽기 전에 Go 단순하고 실용적인 걸 추구 하기 위해 

 예약어를 최소화한다는 걸 알아가자!

 객체 사용하지 않음(struct 대체)

  


1. C, C++, Java 언어와 다르게 매개변수의 타입은 변수명 뒤에 명시합니다. 

(왜 뒤에 명시하는 지 https://blog.golang.org/gos-declaration-syntax)


2.여러개의 결과를 반환 할 수 있다.


 func swap(x,y string)(string, string){ // 매개변수 / 반환 값(이름(선언) 붙일 수 있음)

  return y,x;

 } 

 a,b := 함수();


3. 반복문은 for만 지원, ()는 필요하지 않고 {} 는 필요하다(if)도 //조건문만 써서 for 쓰면 while 이지


4. Go의 기본 자료형

bool

string

int  int8  int16  int32  int64
uint uint8 uint16 uint32 uint64 uintptr

byte // uint8의 다른 이름(alias)

rune // int32의 다른 이름(alias)
     // 유니코드 코드 포인트 값을 표현합니다. 

float32 float64

complex64 complex128


5. 구조체, c++과 유사 (객체는 없다)

  *포인트 개념을 접목시켰다. / 포인터 연산은 없음(포인터 사용해서 변경해야 실제 내용도 변경된다)

  new 를 통해 포인터 반환

var t *T = new(T) 혹은 t := new(T) 이런 식

6. 배열 , 슬라이스란 개념으로 배열 값 가리킨다. 이걸로 배열 일부분을 쉽게 가져올 수 있다. 

https://go-tour-kr.appspot.com/#31


7. 맵 (해쉬 처리)

m 의 요소를 삽입하거나 수정하기:

m[key] = elem

요소 값 가져오기:

elem = m[key]

요소 지우기:

delete(m, key)

키의 존재 여부 확인하기:

elem, ok = m[key]

* tour guide 에서 string을 import 해서 word 단위로 짤라줘야한다. 

import (

"code.google.com/p/go-tour/wc"

    "strings"

)

 // separate the strings into words
    words := strings.Fields(s)

    // iterate over the words to count each instance
    for _, word := range words {
        wordMap[word]++
    }
    return wordMap

이거 때문에 한참 헤맸었다.


1편은 여기까지 쓰고 2편에서 심화된 부분을 다뤄야 겠다.

좀 써보면서 많이 쓰이는 문법 위주로 따로 정리해야겠다.


반응형