Golang을 설치해 보자

|

아golang!go를아시는구나!혹시모르시는분들에대해설명해드립니다.go란google이만든프로그래밍언어로써진.짜.겁.나.간.단.합.니.다.컴파일이매우빠르고키워드가25개인데다문법도간단해서입문이매우쉽습니다..하지만이러면다른언어를배울필요가없으니제작자(?)가치명적인약점(?)을만들었죠.그건바로시스템프로그래밍언어로c나c++를대체할수준은아니라는겁니다.가비지컬렉션과무거운런타임때문에저수준시스템개발에는사용이불가능에가깝습니다.하지만개발속도와실행속도,병행성을생각하여적정지점의서버어플리케이션으로사용됩니다.

간단하게 드립을 통해 go를 알아보았다. 불만이 있으면 나무위키에 항의하자. 내용이 정확한지는... 모른다. 난 오늘 설치한다니까?

golang.org/dl/

 

Downloads - The Go Programming Language

Downloads After downloading a binary release suitable for your system, please follow the installation instructions. If you are building from source, follow the source installation instructions. See the release history for more information about Go releases

golang.org

일단은 windows 환경에서 msi로 패키징 되어 있는 1.16 버전을 인스톨한다.

msi를 설치하고 리부팅 없이 어느 디렉토리에서도 go 커맨드가 잘 동작한다. 설치가 잘 된듯.

시작했으니 이제 절반은 했군.

참고사이트 : golang.org/doc/tutorial/getting-started (고 사이트의 튜토리얼이다.)
참고사이트 : mingrammer.com/gobyexample/ (고 예제 모음을 번역한 사이트다.)
참고사이트 : blog.naver.com/herbdoc95/221589314528 (고 한글 사이트들을 모아놨다. 한의원에서?? 들어가보지는 않았는데 참고할만할 것 같아서 링크.)

일단 getting-started에서 시작해보자.

go.mod 파일을 생성하여 dependency를 관리하려면 go mod init 커맨드를 사용해야 한다.

package 단위로 함수를 그룹화하여 관리함. 같은 디렉토리에 있는 모든 파일이 package 단위로 묶임. package가 실행될 때 해당 package의 main 함수가 기본으로 실행됨.

package를 만들었으면 go run . 커맨드로 해당 디렉토리의 package를 실행할 수 있음.

pkg.go.dev에서 원하는 package를 찾을 수 있음. 찾은 package의 Documentation을 보면 어떤 함수를 사용할 수 있는지 설명을 볼 수 있음. 상단의 복사 버튼으로 경로를 쉽게 복사할 수 있음.

네모 두개 겹쳐진 아이콘을 누르자.

복사한 경로를 import "<경로>" 커맨드를 통해 간단하게 해당 package를 사용할 수 있음.

여기까지 보고 나니까, 모듈에 대한 설명인듯 하네.

참고사이트 : blog.golang.org/using-go-modules (모듈을 설명한 공식 사이트로 추정된다.)
참고사이트 : johngrib.github.io/wiki/golang-mod/ (해당 사이트의 한글 해석본.)
참고사이트 : golang.org/doc/tutorial/create-module (다음 튜토리얼 항목도 모듈??)

대충 함수는 이렇게 생겼단다.

참고사이트 : golang.org/doc/tutorial/call-module-code (그 다음 튜토리얼 항목도 묘듈... 모듈을 생성하고 다른 모듈에서 부르는 내용과 외부 모듈 경로를 내부 소스코드에 연결하는 내용... 약간의 변형을 더한 반복이라 일단 패스.)
참고사이트 : golang.org/doc/tutorial/handle-errors (에러 헨들링에 대한 내용. errors package을 import 해서 따로 import한 log package에다 넣는다?)

와 저렇게 return value를 두개를 지정해 줄 수 있구나! 신기하다!

if 문의 조건에 괄호를 주지 않고, 같다의 비교는 c나 c++와 동일한 ==을 사용하며, 대입은 :=을 사용. formatting 구조는 c나 c++과 비슷하나, 기본으로 사용할 수 있는 %v 파라미터가 있음 (%+v로 변수 이름을, %#v로 코드 위치를 찍을 수 있음. 디버그용으로 유용할듯)

참고사이트 : golang.org/pkg/fmt/ (gloang fmt 패키지 설명)
참고사이트 : golang.org/doc/tutorial/random-greeting (random을 사용하기 위해 math/rand package와 time package를 import해서 어쩌고저쩌고...)

package에 init 함수를 선언해두면 전역변수를 초기화한 이후 호출함.

왠지 array대신 slice로 명칭하는것 같고, [size]type 형태로 선언함. ([10]string... 요런 꼬라지?) 참조할때는 c나 c++와 같은듯.

참고사이트 : golang.org/doc/tutorial/greetings-multiple-people (map을 통한 storage 처리)

map은 make(map[key-type]value_type) 형태로 선언함. (make(map[string]string... 요런 꼬라지) 참조는 여타 다른 언어랑 다를 바가 없어서 패스.

이후에는 testing 모듈을 통해 테스트 하는 방법, 컴파일하고 인스톨하는 방법, 이후에 conclusion으로 끝난다. (아니 별로 도움이 안되잖아)

참고사이트 : tour.golang.org/list (이게 진짜 튜토리얼인것 같다...)
참고사이트 : go-tour-ko.appspot.com/list (한글 버전도 있다.)
참고사이트 : programmers.co.kr/learn/courses/13 (돌아다니다 봤는데, 한글 사이트고 잘 되어 있는듯 하다.)

연구를 좀 해보자.

 

'프로그래밍 > Golang' 카테고리의 다른 글

Golang으로 Ruby(On Rails)를 대체해보자  (0) 2021.03.09

And