'Go언어'에 해당되는 글 1건

  1. 2016/01/29 글뻥 Go 언어 강좌 1

Go 언어 강좌 1

Developer/GO 2016/01/29 18:46

미국와서 취직도 안되고, (사실 지원도 1월 이후로 안하고 있어요 ㅋ)
하던차에 Google 느님들이 만드신 Go 언어를 독학하고 있는데...
이 언어 대박입니다!

제가 대박이라 하는 이유는...
- 자바와 같은 멀티 OS기반입니다.
- 코드가 간결합니다.
- C같은 Native compile이 됩니다.
- 별도 VM을 돌리지 않습니다.
- Node.js 나 PHP 처럼 웹서버에 탑재되는게 아니라, 웹서버를 만들고 컨텐츠를 작성할 수 있습니다.
- C와 연동이 됩니다.
- iOS / Andoroid 다됩니다. 참고 : http://www.sitepoint.com/ios-and-andro ··· th-go%2F
- library도!!! https://talks.golang.org/2015/gophercon-go-on-mobile.slide#1


이정도면 배워둘만 하지 않을까요?

앞으로 많은 회사들이 Go로 서버 만들거 같은 느낌이 드네요.
그래서, Unity3D와 Go로 서버만드는 걸 목표로 공부하면서, 과정을 남기려 합니다.

1. 설치
저는 윈도우와 OSX를 사랑하기 땜시, 그냥 윈도우에서 실행할 수 있는 Go를 다운로드 받았습니다.
공식사이트 : https://golang.org/
다운로드 : https://golang.org/dl/

윈도우는 다운로드 후 실행하면 끝!

2. 설치확인
- 윈도우 10기준으로 좌측하단 "웹 및 Windows 검색" 입력창에 cmd 입력, 명령 프롬프트 실행
- 그 이하에서는 직접실행 창에 cmd.exe 입력후 엔터
- 시커먼 명령 프롬프트 창이 열리면 "go"라고 입력해서 실행되는지 확인

* 실행결과

사용자 삽입 이미지

3. 에디터 선정
Visual Studio에서도 plugin을 설치하면 "Go"언어 지원을 받을 수 있지만,
저는 Notepad++을 사랑하기 때문에 이걸 기준으로 설명합니다.

다른 에디터 지원 목록 : https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins
Visual Studio 사용자는 여기로 : https://marketplace.visualstudio.com/items?itemName=lukehoban.Go

- Notepad++ : https://notepad-plus-plus.org/ 에서 다운로드
다운로드후 실행하면 설치 끝.

이제 Notepad++가 "Go"를 인식할 수 있도록 Plugin을 설치할 차례입니다.
(그냥 해도 되지만, Syntax highlight와 Function, Auto Complete 기능은 기억력 감퇴중인 늙은 개발자에게 필수죠)

- Plugin : https://github.com/chai2010/notepadplus-go

다운로드 후에 압축해제하고
- userDefineLang.xml 파일을 "%AppData%\Notepad++" 폴더에 복사
- 먼저 "%AppData%\Notepad++\functionList.xml"파일을 열어두고, 압축파일에 있는 "functionList.xml"파일을 열어서 해당 XML코드를 복사해서 아까 열어둔 원본 functionList.xml 파일 안에 <parsers>~</parsers> 안에 붙여 넣기
- 압축파일에 있는 go.xml 파일을  "{Notepad++에 설치경로}\plugins\APIs"에 복사
- userDefineLang.xml 파일을 열어서 "<NotepadPlus>"와 "</NotepadPlus>" 테그 부분에 주석 처리 (<!-- //-->) 된 부분을 주석 해제후 저장
- Notepad++이 실행중이라면 종료후 재실행

4. Hello World 작성
Notepad++에서 다음과 같이 코드 작성
package main
 
import "fmt"
 
func main() {
    fmt.Printf("hello, world")
}


* 산뜻하게 Syntax highlight 까지 적용
사용자 삽입 이미지

확장자는 ".go"로 임의 폴더에 저장

5. 실행
해당 소스가 있는 폴더로 이동후

go run helloWorld.go 실행
사용자 삽입 이미지

6. Native 빌드
위의 경로에서
go build helloWorld.go 실행후 helloWorld.exe 실행
사용자 삽입 이미지


7. 한글코딩해보기
모국어로 코딩할 수 있는 환경을 사랑합니다! (C# 빠가 된 이유중 하나입죠...)
현대 언어니까 당연히 UTF-8로 코딩해봐야 하지 않을까요?

package main
 
import "fmt"
 
func main() {
    초기화();
}

func 초기화() {
    fmt.Printf("안녕하세요?");
}


근데 Notepad++로 작업하면 이렇게 한글이 작게나와 불편합니다.

사용자 삽입 이미지
이건 Notepad++의 상단 메뉴 "설정"에서 "스타일" 클릭하시고...
다음 메뉴처럼 변경하면 간단히 해결됩니다.
사용자 삽입 이미지
* 짜잔~!
사용자 삽입 이미지
이제 아까와 같이 실행 해봅시다.
사용자 삽입 이미지
이 아이는 착한 아이입니다. 설마 Native compile 안될까봐 해봤습니다.
사용자 삽입 이미지

8. 함수 확장해보기
한글 함수가 되는걸 확인했으니 이제 함수형태를 확장 해보겠습니다.

package main
 
import "fmt"
 
func main() {
    인사하기(5); 
}

func 인사하기(_x int) {
    if _x%2 == 0 {
        fmt.Printf("안녕하세요?");
    } else {
        fmt.Printf("아님 말고");
    }
    if _x > 0  { 
        인사하기(하나씩까기(_x));
    } 
}

func 하나씩까기(_x int) int {
    _x = _x - 1 ;
    return _x;
}


흔하디 흔한 재귀함수입니다.
(영어로 재귀함수를 뭐라 부르는지 몰라서 인터뷰때 "재귀함수 적용할까?" 물어 보지 못한게 한이 되어 앞으로 꾸준히 사용할겁니다. 엉엉 T_T)

사용자 삽입 이미지
여기서 신기한건
- fmt.Printf 와 같이 메소드명 첫글자가 대문자이면 Public 타입 (외부 엑세스 가능)
(한글 코딩하면 규칙에 위배되니 여기까지만 한글 코딩할께요.)
- fmt.Printf 대신 fmt.Println 사용하면 행 자동 바꿈.
- 타입을 항상 뒤에 둔다는 것.
- Function이 다음과 같이도 정의될 수 있다는 것.
func 테스트기능(_x int) (int, int) {
    return 0, 1;
}




다음에는 웹서버 한번 만들어 봅시다.

2016/01/29 18:46 2016/01/29 18:46