![](https://t1.daumcdn.net/cfile/tistory/21342F4C5683CAB921)
1. 연산자
Go 언어는 각종 기능과 라이브러리를 패키지로 만들어서 제공합니다.
이 역시 파이썬과 비슷합니다.
파이썬을 사용해보신 분들이라면 쉽게 사용하실 부분입니다.
패키지를 사용하려면 다음과 같이 import 키워드를 사용합니다.
![](https://t1.daumcdn.net/cfile/tistory/241ADE4D5683CB3D26)
이 import 키워드는 Go 강좌 2편. 안녕? Stop? GO! 편에서 소개한 적이 있습니다.
![](https://t1.daumcdn.net/cfile/tistory/2110D14B5683CB5913)
이 import 키워드로 가져온 패키지를 사용하는 방법은 간단합니다.
바로 패키지 이름에 점(.)을 붙여서 패키지에서 제공하는 함수, 변수, 상수를 사용합니다.
1-1. 손 쉽게 사용하기
Go 언어를 구경하다 보면 정말 마음에 드는 문법들이 너무 많아요.
패키지를 가져올 때
import "패키지 이름" 으로 가져온다고 위에서 알려드렸습니다.
하지만 규모가 큰 프로젝트에서는 여러 패키지를 많이 사용하는 상황이 있을 수도 있습니다.
그럴 때 편하게 여러 패키지를 가져오는 방법이 있습니다.
Go lang 만세
여러 패키지를 사용하는 방법은 아래와 같이 사용합니다.
![](https://t1.daumcdn.net/cfile/tistory/2247834C5683CBB016)
import 키워드 뒤에 괄호로 묶은 뒤에 패키지 이름을 적으며 사용하면 됩니다.
1-2. 아니 꼭 패키지.함수 이렇게 써야되나욧?
![](https://t1.daumcdn.net/cfile/tistory/2120944C5683CBE737)
물론 대답은 No 입니다.
패키지를 전역 패키지로 가져오면 굳이 점(.)을 사용할 필요가 없어집니다.
바로 아래와 같이 사용이 가능합니다.
![](https://t1.daumcdn.net/cfile/tistory/273949355683CC1F22)
![](https://t1.daumcdn.net/cfile/tistory/22444B365683CC2707)
바로 패키지 뒤에 점(.)을 적고 import 키워드를 사용하면 전역 패키지로 가져오게 되어
패키지 이름을 적고 함수를 적을 필요가 없어지게 되는 것 입니다.
하지만 장점도 있지만 단점도 있습니다.
여러 패키지를 가져오며 함수의 이름이 중복인 패키지가 있을 수도 있습니다.
따라서 '이 방법은 좋은 방법은 아니다'라고 생각합니다.
1-3. 패키지의 이름을 Tomori Nao로 할 수 있나요?
물론 가능합니다!
패키지를 가져올 때 패키지 이름을 지정 할 수도 있습니다.
![](https://t1.daumcdn.net/cfile/tistory/2716FA345683CC6A0C)
아래와 같이 패키지 이름을 지정할 수 있습니다.
![](https://t1.daumcdn.net/cfile/tistory/226D4B385683CC8628)
![](https://t1.daumcdn.net/cfile/tistory/2555B1385683CC8737)
위와 같이 사용하면 패키지 이름을 지정할 수 있습니다.
패키지 이름 지정은 Go 언어에서 제공하는 내가 만든 패키지와 기본 패키지의 이름이 중복이 될 때,
다른 사람이 배포하는 패키지 이름과 자신의 패키지 이름이 중복이 될 때 사용합니다.
Go 언어에서는 패키지를 가져온 뒤 사용을 안하면 컴파일 에러가 발생합니다.
따라서 사용하지 않는 패키지 이름 앞에 언더 바(_)를 지정하면 컴파일 에러가 발생하지 않습니다.
패키지 이름을 빈 식별자로 사용하여 컴파일 에러를 방지 할 수 있습니다.
실제로 사용하는 사례는 스택오버플로우에 답변에서 찾아볼 수 있었습니다.
![](https://t1.daumcdn.net/cfile/tistory/222313335683CCA736)
저와 같은 생각을 하는 질문자가 있었습니다.
과연 프로젝트에서 이러한 코드를 사용할까?
실제 사례가 있나요 라고 질문하는 질문자.
![](https://t1.daumcdn.net/cfile/tistory/243949355683CCB625)
넵 사용은 하는 것 같네요.
2. 조건문(if, else, switch)
조건문이란 말 그대로 조건의 결과에 따라 실행되는 것이 결정됩니다.
프로그래머의 프로그램의 흐름을 원하는 형태로 컨트롤을 할 수 있게 해주는 녀석이죠.
아래 표에 정리된 조건문들에 대해서 배워보도록 하겠습니다.
조건문 종류 |
설명 |
if |
말 그대로 if문은 만약에~ 할 경우 if 오늘 금요일 { 불타오른다() } |
else |
else 문은 아닐 경우~ if 오늘 금요일 { 불타오른다() } else { 시체가된다() } |
elseif |
이것도 아닐 경우 만약에 ~ 의 경우 if 오늘 금요일 { 불타오른다() } else if 오늘 토요일 { 토요일이니까불타오른다() } else { 시체가된다() } |
switch | switch 문은 맞을 경우? (?) switch 요일 { case 월: 시체가된다() case 화: 시체가된다() case 수: 생기가띈다()
.... case 금: 불타오른다() case 토: 불타오른다() case 일: 자살하고싶다() default: 이건무슨요일일까요() // 모든 Case에 해당하지 않을 때 실행됩니다. } |
(1) if문
if문이란 조건문의 기본 중의 기본인 녀석입니다.
프로그래머가 특정 조건을 설정하여 프로그램의 흐름을 제어할 때 사용합니다.
if문의 기본 구성은 이러합니다.
![](https://t1.daumcdn.net/cfile/tistory/2269D34C5683CF7408)
관계 연산자와 if 문을 이용하여 간단한 코드를 작성해보겠습니다.
![](https://t1.daumcdn.net/cfile/tistory/227901485683CF820D)
![](https://t1.daumcdn.net/cfile/tistory/2162524F5683CF9134)
이것을 쉽게 그림으로 표현하면 이렇게 됩니다.
![](https://t1.daumcdn.net/cfile/tistory/2248C94C5683CF9D27)
위 순서도를 보았을 때,
10이 5보다 큰가의 조건으로 주어지면서 클 경우에는 "이야~ 10이 더 크구먼유~"를 출력하며
아닐 경우에는 해당하는 조건이 없기 때문에 아무것도 실행하지 않습니다.
(2) else문
else 문은 if 문의 부족함을 채워주는 녀석이라고도 과언이 아닙니다.
위에서의 if 문에서의 조건을 보면 부족한 부분이 있다고 생각을 할 수 있습니다.
아니..10이 5보다 클 경우에의 조건을 넣고 싶은데!
그럴 때의 사용하는게 else 문입니다.
어떤 조건에 해당하지 않는 경우에 대해서 처리를 할 수 있도록 하는 녀석이 else문 입니다.
우선 if ~ else문의 기본 구조를 보도록 하겠습니다.
![](https://t1.daumcdn.net/cfile/tistory/2434704D5683CFF726)
이 역시 관계 연산자와 if ~ else 문을 이용하여 간단한 코드를 작성해보았습니다.
![](https://t1.daumcdn.net/cfile/tistory/236B264C5683D0110A)
![](https://t1.daumcdn.net/cfile/tistory/2238384C5683D01337)
이것을 쉽게 그림으로 표현하면 이렇게 됩니다.
![](https://t1.daumcdn.net/cfile/tistory/27383F4B5683D02308)
위 순서도를 보았을 때,
10이 5보다 큰 가의 조건으로 주어지면서 클 경우에는 "이야~ 10이 더 크구먼유~"를 출력하며
아닐 경우에는 "5가 작네유..." 를 출력합니다.
(3) elseif문
이 elseif문은 if~else 문의 부족함을 완벽히 채워주는 그런 녀석입니다.
더 많은 조건을 추가해서 마음대로 흐름을 제어할 수 있게 되는 것이죠.
하나의 조건이 거짓일 때 elseif문의 조건식을 검사합니다.
일단 else if 문의 기본 구조를 보도록 하겠습니다.
![](https://t1.daumcdn.net/cfile/tistory/216669505683D04E01)
이 역시 관계 연산자와 else if 문을 이용하여 간단한 코드를 작성해보았습니다.
![](https://t1.daumcdn.net/cfile/tistory/2273A3495683D06316)
![](https://t1.daumcdn.net/cfile/tistory/275259495683D06433)
이것을 쉽게 그림으로 표현하면 이렇게 됩니다.
![](https://t1.daumcdn.net/cfile/tistory/27121F4B5683D0712D)
넵...확실히 순서도가 이제 좀 커졌다 라고 생각이 들 정도네요.
위 순서도를 보았을 때,
10이 5보다 큰 가의 조건으로 주어지면서 클 경우에는 "이야~ 10이 더 크구먼유~"를 출력하며
아닐 경우에는 새로운 조건이 5와 5는 같은가? 라는 조건이 주어집니다.
조건이 맞을 경우에는 "같당께유!"를 출력하며 아닐 경우에는 "5가 작네유..." 를 출력합니다.
(4) switch문
이제 switch문에 대해 알아보도록 하겠습니다.
switch문은 if문과 달리 여러개의 조건식의 결과를 검사할 때 사용됩니다.
switch문의 기본 구조를 보도록 하겠습니다.
![](https://t1.daumcdn.net/cfile/tistory/2248C94C5683D0A72C)
각 Case를 비교를 하여 값이 일치하면 해당 Case에 있는 코드를 실행하고 switch문을 중단합니다.
그리고 모든 Case에 해당하지 않을 때에 default를 실행합니다.
여기서 Go언어의 특이한 점은 Switch 문에 break 키워드를 생략한 다는 것 입니다.
switch문을 사용하는 예제 코드를 작성해보았습니다.
![](https://t1.daumcdn.net/cfile/tistory/2258A7405683D0BF1C)
![](https://t1.daumcdn.net/cfile/tistory/2463CF405683D0C10F)
그냥 쉽게 switch문을 이해하자면 if 문이 여러개 박혀있다고 생각하시면 이해가 빨리 될 것 같네요.
switch에 day 의 값을 비교하게 한 뒤에 각 맞는 case를 실행하게 됩니다.
day 에는 금이 들어있으므로 case 금이 실행됩니다.
※ case에는 문자열 뿐만 아니라 숫자도 가능합니다!
(5) Switch in fallthrough, break
이 위의 내용에서 다 작성한 줄 알았더니 구글링을 통해 Go 언어는 break를 어떻게 사용하나 알아보려 했는데.
새로운 키워드를 알게 되었습니다.
그래서 둘 다 정리할 겸 작성해봅니다.
(5-1) fallthrough
사실 이 녀석을 언제 써먹을 지 생각이 나질 않네요...
딱히 쓸 일은 없을 것 같은 녀석입니다.
특정 case의 코드를 실행한 뒤 다음 case를 실행하고 싶을 때
fallthrough 키워드를 사용합니다.
switch문에서 fallthrough를 사용하는 예제 코드를 작성해보았습니다.
![](https://t1.daumcdn.net/cfile/tistory/233CED425683D12817)
![](https://t1.daumcdn.net/cfile/tistory/233799425683D12A1C)
다만 fallthrought 키워드는 맨 마지막 case에서는 사용할 수 없습니다.
ps. 그냥 fallthrought 키워드는 switch에서 break 빼서 다음 case 실행되는 것과 같은 것 같아요.
(5-2) break
switch에서 break를 사용할 때에는 if문 안에 쓰는 것 같아 보입니다.
![](https://t1.daumcdn.net/cfile/tistory/236E4A465683D14C06)
위키에서도 if문을 빠져나올 때 사용한 걸로 보아...
쿰척..쿰척...
![](https://t1.daumcdn.net/cfile/tistory/266F8A405683D1630A)
![](https://t1.daumcdn.net/cfile/tistory/215494405683D16623)
위와 같이 됩니다.
만약 b1이 cat이 아닐 경우에는 0만 출력하게 되는 것이죠.
이번 강좌에서는 조건문과 패키지에 대한 설명이 끝났습니다.
긴 글을 읽어주셔서 감사합니다.
다음 강좌에서는 반복문에 대해 알아보도록 하겠습니다.