HelloMinchan
처음처럼
HelloMinchan
LinkedIn
전체 방문자
오늘
어제
  • 분류 전체보기 (306)
    • Backend (4)
      • NestJS (1)
      • Express (1)
      • Spring (2)
    • Infrastructure (1)
      • AWS (1)
    • Frontend (1)
      • Next.js (1)
    • Language & Runtime (4)
      • Java (2)
      • Node.js (2)
    • Computer Science (8)
      • Computer Networks (3)
      • Operating Systems (4)
      • OOP (1)
    • 독서 (4)
      • 데이터 중심 애플리케이션 설계 (3)
      • 객체지향의 사실과 오해 (1)
    • 회고 (4)
      • Project (2)
      • Career (2)
    • Deprecated (280)

채널

  • GitHub
  • LinkedIn

최근 글

태그

  • 백엔드
  • 백준Go
  • 알고스팟
  • back-end
  • front-end
  • programmers
  • 프로그래머스
  • 프로그래머스C++
  • Algospot
  • 백준C++
  • 프로그래밍
  • 알고스팟Python
  • Database
  • 프로그래머스Python
  • 개발자
  • 백준Python
  • Baekjoon Online Judge
  • 코딩
  • 백준
  • 데이터베이스

최근 댓글

인기 글

hELLO
HelloMinchan
Deprecated

[Go] Go 언어 예제와 기본 문법 정리 1탄(패키지, 임포트와 익스포트, 세미콜론, 주석)

[Go] Go 언어 예제와 기본 문법 정리 1탄(패키지, 임포트와 익스포트, 세미콜론, 주석)
Deprecated

[Go] Go 언어 예제와 기본 문법 정리 1탄(패키지, 임포트와 익스포트, 세미콜론, 주석)

2020. 2. 13. 03:37

Copyright (c) 2009 The Go Authors. All rights reserved. Supported by Google

[Go] Go 언어 예제와 기본 문법 정리 1탄

(패키지, 임포트와 익스포트, 세미콜론, 주석)

(Go 언어 버전 : 1.13.7, 글쓴날 : 2020.02.13)

 


* 이 글은 글쓴이가 공부한 내용을 정리하며 올리는 글입니다.

* 글의 내용은 공식 홈페이지 및 튜토리얼을 기반으로 공부하여 작성하였습니다.

* Go 언어가 처음이시라면 ☞ [Go] Go 언어 소개와 설치 및 컴파일 방법


 

 

Go 언어 기본 문법 정리


* Hello, World! 예제를 통해 파악하기

이번 글에서는 모든 프로그램의 시초인 Hello, World! 예제를 통해 가볍게 Go 언어의 기본 문법을 알아보겠습니다.

1
2
3
4
5
6
7
package main
 
import "fmt"
 
func main() {
    fmt.Println("Hello, World!")
}

무심코 넘어가는 위의 기본 Hello, World! 예제에서 얻을 수 있는 정보가 매우 많습니다.

 

(1) 패키지(Packages)

Go 프로그램은 모두 패키지로 구성되며 프로그램은 main 패키지에서 실행을 시작합니다.

(마치 Java가 생각나네요.)

위의 예제의 3번째 라인에서 fmt 패키지를 추가로 import 하고 있습니다.

 

* fmt 패키지

기본적인 입출력을 담당하는 패키지로 C언어의 stdio 헤더와 유사한 기능을 한다 보시면 되겠습니다.

잠깐 출력함수를 살펴보면 Println(), Print(), Printf()의 세가지 함수가 있습니다. (진짜 Java랑 비슷하네요?!)

1
2
3
4
5
6
7
8
9
package main
 
import "fmt"
 
func main() {
    fmt.Println("Hello, Minchan!")
    fmt.Print("Hello, Minchan?")
    fmt.Printf("Hello, Minchan~")
}

 

- Println() : ,(쉼표)로 구분지어 여러 인자를 받을 수 있으며 마지막에 자동 개행(줄바꿈)을 합니다.

- Print() : ,(쉼표)로 구분된 인자간에 띄어쓰기를 하지 않으며 마지막에 자동 개행또한 하지 않습니다.

- Printf() : %Format(형식지정자)를 사용할수있습니다.

 

1
2
3
4
5
6
7
8
9
10
package main
 
import "fmt"
 
func main() {
    fmt.Println("Hello~,", "I'm Minchan", "24 years old!") // ,(쉼표)로 구분해 여러 인자를 전달 가능합니다!
    fmt.Print("Hello~, ", "I'm Minchan ") // 인자마다 띄어쓰기를 하지 않고 마지막에 줄바꿈을 하지 않아요!
    fmt.Printf("%d years old!", 24) // 형식 지정자를 사용할 수 있어요!
}

 

위 예제의 실행 결과입니다.


(2) 임포트(Import)와 익스포트(Export)

위에서 보셨듯이 Go 언어에서 외부 패키지를 임포트(Import) 하려면 import 키워드를 사용해 해당 패키지에 접근하실 수 있습니다.

또한, 여러 패키지를 임포트 하실 때 소괄호에 감싸 한 번에 처리하실 수도 있습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
package main
 
import (
    "fmt"
    "math"
)
// import의 2가지 방식입니다.
/*
import "fmt"
import "math"
*/
 
func main() {
    fmt.Printf("Hello~ Pi is %f!", math.Pi)
}

 

익스포트(Export)의 경우는 조금 특이합니다. Go 언어에서는 패키지 레벨의 익스포트(Export)를 통해 캡슐화를 지원합니다.

 

* 캡슐화 : 객체지향 프로그래밍(OOP)의 메커니즘으로 접근 제한을 통해 데이터를 관리하는 방법입니다.

 

Go 언어에서는 익스포트(Export)되는 데이터(변수, 상수, 메서드 등)의 첫 글자가 대문자로 시작하면 외부에서 접근이 가능하고 소문자일 경우 접근이 불가능합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
 
import (
    "fmt"
    "math"
)
 
func main() {
    /*
   에러 발생!
 
    fmt.Printf("Hello~ Pi is %f!", math.pi)
 
   math 패키지 Pi의 첫 글자가 소문자일 경우 참조할 수 없습니다!
    */
    fmt.Printf("Hello~ Pi is %f!", math.Pi)
}

(3) ;(세미콜론)

눈치채셨겠지만 위의 예제들에서는 ;(세미콜론)을 사용하지 않았습니다. (못 채셨다면 Python 프로그래머시군요? ㅎ_ㅎ)

그렇다면 Go 언어는 Python처럼 ;(세미콜론)을 사용하지 않느냐???

 

정답은 그렇지 않습니다!!

 

Go 언어도 C 언어나 Java와 마찬가지로 문장의 끝에 ;(세미콜론)을 붙여 문장의 끝을 인식하지만,

Go 언어의 Lexer(어휘 분석기)가 간단한 규칙을 통해서 마치 JavaScript의 세미콜론 자동 삽입 기능(Automatic Semicolon Insertion, ASI)처럼, 프로그래머가 명시적으로 코드에 ;(세미콜론)을 작성하지 않았더라도 컴파일 시 각 문장의 끝에 생략된 ;(세미콜론)을 자동으로 삽입해 줍니다.

1
2
3
4
5
6
7
8
9
10
package main
 
import (
    "fmt"
)
 
func main() {
    fmt.Println("Hello ; ")    // ;(세미콜론 생략.)
    fmt.Println("Hello ; ");  // ;(세미콜론 명시.)
}

따라서 출력 문장의 끝에 ;(세미콜론) 유무만 다른 위 예제의 결과는 서로 동일합니다.

 

단, 이러한 ;(세미콜론) 자동 삽입 기능에는 주의할 점이 있습니다!

 

{ 같은 여는 중괄호를 함수 선언문 혹은 반복문, 조건문과 같은 제어문 바로 뒤에 반드시 써줘야 합니다.

무슨말이냐 하면...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package main
 
import (
    "fmt"
)
/*
에러 발생!
            ↓ { 가 없습니다!!
func main()
{
   fmt.Println("Hello")
}
 
*/
func main() {
    fmt.Println("Hello")
}

위의 예제에서 주석 처리 된 부분을 보시면, 9번째 줄의 func main() 함수 선언문 뒤에 바로 { 를 적지 않고 C 언어나 Java처럼 내려 적은 걸 볼 수 있습니다.

Go 언어에서는 저렇게 코딩하는 순간 func main()을 문장의 끝으로 판단하여 ;(세미콜론)을 자동으로 삽입하므로 에러가 발생하게 됩니다.

그러므로, Go 언어 프로그래밍 시에는 15~17번째 줄처럼 항상 { 의 위치를 생각해서 코딩하셔야 합니다.


(4) 주석

마지막으로 Go 코드에서 주석 처리하는 방법입니다.

역시 눈치가 빠르신 분들은 위의 예제들 속에서 이미 캐치하셨을 것 같습니다!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package main
 
import (
    "fmt"
)
 
func main() {
    /*
    fmt.Println("저")
    fmt.Println("는")
    fmt.Println("여")
    fmt.Println("러")
    fmt.Println("줄")
    fmt.Println("주")
    fmt.Println("석")
    fmt.Println("이")
    fmt.Println("에")
    fmt.Println("요")
    */
 
    // fmt.Println("저는 한 줄 주석이랍니다. ~.~")
    fmt.Println("Hello, World!")
    // fmt.Println("드디어 끝나간다!")
}

네, 설명은 필요 없을 것 같네요.....


 

 


 

 

여기까지 Go 언어 예제와 기본 문법 정리 1탄이었습니다.

도움이 많이 되셨나요? 안 되셨더라도 저는 공부가 됐습니다. ^^

장난이고요.. 제일 간단한 Hello, World! 프로그램인데도 이렇게 많은 정보들이 담겨 있었습니다.

다음 2탄에서는 1탄에서 다루지 않은 예제와 Go 언어의 문법에 대해 알려드리도록 하겠습니다.

감사합니다!

저작자표시 비영리 변경금지 (새창열림)

'Deprecated' 카테고리의 다른 글

[Go] Go 언어 예제와 기본 문법 정리 2탄(변수 var, 상수 const)  (0) 2020.02.16
[Python] Python 소개와 설치 방법  (4) 2020.02.14
[Go] Go 언어 소개와 설치 및 컴파일 방법  (4) 2020.02.12
[Node.js] PM2 소개와 설치 및 사용법  (0) 2020.02.11
[Node.js] npm 소개와 설치 및 사용법  (3) 2020.02.10
  • [Go] Go 언어 예제와 기본 문법 정리 1탄
  • (패키지, 임포트와 익스포트, 세미콜론, 주석)
  • Go 언어 기본 문법 정리
'Deprecated' 카테고리의 다른 글
  • [Go] Go 언어 예제와 기본 문법 정리 2탄(변수 var, 상수 const)
  • [Python] Python 소개와 설치 방법
  • [Go] Go 언어 소개와 설치 및 컴파일 방법
  • [Node.js] PM2 소개와 설치 및 사용법
HelloMinchan
HelloMinchan
Though you should not fear failure, You should do your very best to avoid it.

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.