업무에 사용하는 Go 언어 1 – 시작 및 설치

Go 언어에 대해 간단하게 알아보고 설치하여 ‘Hello, World’를 출력해봅시다.
항상, 새로운 기술을 사용하고자 하거나 학습할 때는 무엇을 위해 만들어졌는지 찾아보는 것이 중요합니다.
Go 언어는 무엇을 집중적으로 해결하고자 만들었는지 알아봅시다.

업무에 사용하는 Go 언어 썸네일
업무에 사용하는 Go 언어

개인적으로 Go 언어의 역사와 같은 이야기는 지루해서 따로 정리하지 않겠습니다.
알아두면 손해 볼 것은 없지만 요즘 대부분의 인간은 긴 글을 읽지 못 하기에 넘어갑니다.
Go 언어 자체에 대한 내용을 알아보기 위해 공식 사이트에서 살펴보는 것이 좋겠습니다.

Go 언어 공식 사이트 – go.dev

image
go.dev 메인페이지에 나와있는 대표 문구

Go 언어의 주된 목표는 대규모 시스템 개발을 효율적으로 할 수 있도록 하는 것과 성능(performance) 향상입니다. 또한, 직접 사용하면서 느낀 Go 언어는 다음 후기와 같은 장단점이 있다고 생각합니다.
장단점이 꼭 Go 언어를 사용해야만 하는 이유가 되거나 사용해선 안 되는 이유가 되는 것은 아니기 때문에 참고만 하시고 잘 활용하는 것은 100% 본인의 몫입니다.

장점

  • 개발 속도 향상
    • 코딩 자체에 대한 속도는 개발자의 능력에 따라 다르지만 환경 설정이나 서버 구축에서 시간을 많이 아낄 수 있었습니다.
  • 동시성 처리
    • Goroutine과 Channel을 이용해서 분산 작업을 하는데 특화되어 있다고 생각합니다.
  • 메모리 관리 및 효율성
    • 내부적으로 별도의 scheduler가 있기 때문에 고성능 시스템 구축에도 적절했습니다.
    • Go 언어는 경량화 자체에 집중했기 때문에 실제로 연산이 빠른 것을 확인할 수 있습니다.
  • 정적 타입 언어의 안전성
    • 컴파일 언어의 특징이기에 당연합니다.
  • 네트워크 및 웹 서버 개발에 최적화
    • Go 언어는 특히 네트워크 및 분산 시스템, 웹 서버를 위해 설계됐습니다.
  • 코드의 단순함과 명료함
    • 이 부분은 개인적으로 느끼기에는 호감이었습니다.
      Go 언어만의 특이한 문법이 저에게는 잘 맞았습니다.

단점

  • 생태계
    • 큰 단점은 아니고 약간의 단점이라고 보아야 할 것 같습니다.
      파이썬과 같이 워낙 대중적인 언어보다는 정보가 부족한 것은 사실입니다.
      그러나, 이는 비전공자가 해당 언어를 많이 사용하는가 아닌가 차이라고 생각합니다.
      실제로 업무를 하면서 정보가 부족하여 문제가 되었던 경험은 없습니다.
  • 저수준 시스템 개발에는 부적절
    • C 계열 언어와는 다르게 운영 체제나 하드웨어를 직접 제어하는 저수준 시스템 개발에는 부적절합니다. 별도의 scheduler, garbage collection, goroutine 등을 지원하기 위한 런타임 때문에 불가능에 가깝습니다.
  • 개발자의 능력이 매우 중요
    • 컴퓨터 공학자들은 어떤 프로그래밍 언어가 좋은 언어인지에 대하여 엄청나게 오랜 기간 연구를 해왔습니다. 예를 들어 자바스크립트에서 타입 캐스팅을 통해 개발자 실수를 줄일 수 있도록 개선한 타입스크립트가 만들어진 것이 대표적인 사례라고 할 수 있습니다.
      하지만, Go 언어는 이런 부분에 중점을 둔 언어가 아니기 때문에 오로지 개발자가 정신을 제대로 집중하여 개발을 진행해야 하는 언어입니다.
      업무를 하면서 생각을 해보았을 때는 아무리 Go 언어가 특이하다고 해도 컴퓨터 공학을 벗어나는 것은 아니기 때문에 문제될 것은 없었습니다.

이렇게 장단점을 간단하게 정리해보았습니다.
장단점에 나온 용어들은 지금은 몰라도 되는 내용들이며 모두 다룰 예정이기 때문에 가볍게 넘기셔도 좋습니다.

image 1
Go 언어 마스코드 – Gopher

Go 언어 설치

image 2
https://go.dev/dl/

위 링크에 접속하여 본인의 OS에 적합한 파일을 다운로드하여 설치하도록 합니다.
본 시리즈는 윈도우를 기준으로 작성되었기에 .msi 파일을 다운로드하여 설치했습니다.

설치 파일을 실행하고 다음을 누르다 보면 설치가 끝납니다.
워낙 간단하여 별도로 정리하지는 않겠습니다.

혹시나 GOPATH의 값을 수정하시는 분들이 있는데 추천하지 않습니다.
OS의 환경변수가 무엇인지 정확하게 이해하신 분이라면 원하신대로 하셔도 될 것 같네요.
저의 경우 어떠한 값이나 옵션을 커스텀하지 않았고 업무에 문제가 되지 않았습니다.

Go 언어 프로젝트 시작하기

이제, 이 시리즈를 통해 우리 함께 Go 언어를 연습할 프로젝트를 생성해보겠습니다.
본인이 원하는 경로에 새로운 폴더를 만들고 IDE로 열어줍니다.
본 시리즈에서는 프로젝트 이름을 go-study로 지정하고 IDE는 vs code를 사용합니다.

개인적으로 좋아하는 user extension이 많이 깔려있기 때문에 보여지는 부분이 다르게 보일 수 있는 점 참고바랍니다.

그럼 우리의 첫 go 파일을 작성해봅시다.

  1. 원하는 경로에 원하는 이름의 폴더
    앞으로 이 폴더를 계속 사용할 것입니다.
  2. app.go 파일 생성
Go
package main

import "fmt"

func main() {
    fmt.Println("Hello, World!")
}

나중에 우리는 패키지가 무엇이며 모듈이 무엇이며 공부하겠지만, 워낙 빈번한 실수가 발생하기 때문에 미리 설명합니다.
Go 언어로 작성된 프로젝트 혹은 프로그램은 go run 명령어를 통해 실행하는데 처음 시작되는 곳은 main() 함수입니다.
Go 언어에서는 패키지 명이 main인 경우에는 실행 가능한 형태로 확인하여 main() 함수를 통해 시작을 하게 되고, 그렇지 않은 패키지이라면 실행 가능한 형태가 아닌 라이브러리와 같이 재사용 가능한 코드 모음으로 간주합니다.

이제 go run app.go 명령어를 터미널에 입력하여 코드를 실행시켜 봅니다.

image 3
app.go 코드 실행

이렇게 우리는 go 언어 프로젝트를 만들어서 첫 프로그램을 만들었습니다.
앞으로의 내용은 go 언어로 프로그래밍을 할 때 기본적으로 지켜주어야 하는 문법을 다루도록 하겠습니다.