본글은 Tucker님의 Go 언어 프로그래밍 학습 글입니다.
Go를 만든 사람들
Go언어는 구글에서 일하는 로버트 그리즈머, 롭 파이크 , 켄 톰슨이 개발한 프로그래밍 언어이다.
개발자들의 스펙이 정말 근본 그 자체이다.
우선 모두 구글 개발자이고 켄 톰슨은 무려 C언어의 모체가 된 B언어, 유닉스 , UTF-8의 개발자이다.
롭 파이크도 UTF-8의 개발에 참여했다.
근본 그 자체인가..
문자 인코딩
켄톰슨과 롭파이크가 UTF-8의 개발자여서 그런지 Go는 UTF-8을 기본 인코딩 방식으로 채택했다.
문자 인코딩은 무엇을 뜻할까?
컴퓨터는 0과 1밖에 모른다. 저번 강의에서는 고수준의 언어가 결국 나중에 0과 1로 이루어진
기계어로 변해야한다고 배웠다.
문자도 마찬가지로 숫자로 바뀌어야하는데 각 문자에 대응하는 숫자를 정하는 방식이다.
(즉 글자와 숫자가 1:1 매핑되어있는 표이다.)
원래 전통적인 인코딩 방식인 ANSI 코드 영어만 표현하고 한문자를 1바이트로 (0~255)나타낸다.
후에 컴퓨터가 보편화되면서 영어 이외의 문자도 표현할 수있는 유니코드가 개발되었고 그 유니코드를 인코딩하는 방식중 하나가 UTF-8이다.
Go의 특징
Hello World!
간단하게 Hello World!를 출력하는 go코드이다.
한줄 한줄 설명하자면
package main
go의 모든 코드는 패키지로 시작해야한다. 패키지는 코드를 묶는 단위이다.
원래 패키지 이름은 단 한가지의 경우만을 빼면 아무렇게 적어도 상관없다.
바로 패키지의 이름이 main일 때는 특별한 뜻을 가진다.
CPU가 명령을 읽을 때 어디서부터 명령을 읽을 것인지 정해줘야한다. 그 시작점이 main이다.
프로그램은 메인부터 시작한다. 이름이 main인 패키지는 해당 폴더에서 하나여야한다.
import "fmt"
import는 한국말로는 수입한다는 뜻인데 다른 패키지를 가져오겠다는 뜻이다. 여기서는 fmt라는 패키지를 가져온다는 뜻이다.
func main() { //주석 처리 inline 방법 /* 주석 처리 block방법 */ fmt.Println("Hello World") }
다음은 함수를 선언하는 파트이다. 함수 이름에는 아무거나 적어도 된다. 그런데 여기서도 main은 한번만 써줘야한다. 즉 main함수를 가지는 패키지가 main 패키지 인 셈이다.
함수안의 코드는 { } 중괄호 안에 적어줘야한다.
fmt.Println("Hello World")
fmt는 아까 import한 패키지이다. fmt안에 포함되어있는 함수 Println을 사용하겠다는 뜻이다.
Println함수는 Hello World를 화면에 출력해준다.
그렇다면 실제로 실행되는지 build해보자
실행파일 만들기
Vscode를 실행시키고 맨위 Terminal 탭에서 new terminal을 클릭해서 새로운 terminal을 실행시킨다.
(go 1.16이후 버전에서는 module을 만들어줘야하기 때문에)
go mod init
이 명령어를 적어준다.
그렇다면 폴더에 go.mod가 생길 것이다.
그 다음에는 go build
를 작성해주자.
그리고 폴더를 다시보면 프로그램이 생성되었을 것이다.
지금 필자는 ubuntu terminal을 이용하고 있기때문에 hello.exe가 아닌 hello가 생성되었다. (다른 운영체제라는 말)
그리고 ./파일이름
을 입력하면 실행되는 것을 확인할 수 있다.
Uploaded by Notion2Tistory v1.1.0