본문 바로가기
CS/Go

[프로그래밍 언어] Go 언어 기초 - 커맨드라인 인수와 os.Args 변수

by Warehaus 2023. 5. 1.

 

2023.04.30 - [CS/Go] - [프로그래밍 언어] Go 언어 시작하기, 환경설정 - Hello world

 

[프로그래밍 언어] Go 언어 시작하기, 환경설정 - Hello world

안녕하세요 warehouse 입니다. 최근 프로젝트를 진행하면서 Go 언어를 접하게 되었습니다. C++, Python 위주로 사용하였으나, 일부 모듈에서 Go 언어의 도입이 필요했기 때문인데요. Go는 이미 꽤나 많

armin.tistory.com

 


 

대부분의 프로그램은 입력을 통해 출력을 생성하며

프로그램에서의 입력 데이터는 파일, 네트워크, 키보드 입력, 커맨드라인 인수 등으로 받을 수 있습니다.

 

이번 포스팅에서는 프로그램에서 받을 수 있는 입력 중 하나인

커맨드 라인 인수에 대해 다뤄보겠습니다.

 

 

커맨드라인 인수

 

한글로 작성하다 보니

커맨드라인 인수라는 말이 다소 와닿지 않는 것 같습니다.

 

영어로 하면 Command line arguments 인데

명령어에 입력된 argument로 이해하시면 될 것 같습니다.

 

아래 위키를 참고하시면 이해하시는데 도움이 될 것 같아요.

 

 

https://en.wikipedia.org/wiki/Command-line_interface#Arguments

 

Command-line interface - Wikipedia

From Wikipedia, the free encyclopedia Computer interface that uses text A command-line interpreter or command-line processor uses a command-line interface (CLI) to receive commands from a user in the form of lines of text. This provides a means of setting

en.wikipedia.org

반응형

 

Go 언어에서 커맨드라인 인수는

os 패키지에 포함되어 있는 Args 변수로 사용이 가능합니다.

 

따라서 os 패키지 밖에서는

os.Args로 사용됩니다.

 

 

os.Args

 

os.Args 변수는 문자열의 슬라이스입니다.

간단히 설명하면 C에서의 고정 크기의 배열을

생각하시면 될 것 같습니다.

 

슬라이스는 Go에서 기본 개념으로 여겨지며 자세한 내용은 추후 포스팅에 작성하도록 하겠습니다.

 

os.Args의 첫 번째 원소는 명령어 이름을 의미합니다.

 

아래 간단한 예시를 보고 넘어가겠습니다.

 

go build cla.go
./cla 1 2 3 4

 

위 예시처럼 명령어를 입력한다고 하면

os.Args[0] 는 ./cla 가 됩니다.

그리고 다음 원소인 os.Args[1] 은 1을 의미하게 될 것입니다.

 

대충 감이 오시나요?

 

잘 와닿지 않더라도 다음 예시를 보면

os.Args가 어떤 값을 가지고 있는지, 어떻게 사용되는지를 이해하는데

더 도움이 될 것입니다.

 

그럼, os.Args를 이용하여

커맨드라인 인수 전체를 출력하는 프로그램을

만들어 보겠습니다.

 

 

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(os.Args)
}

 

빌드하고 실행한 결과를 확인합니다.

결과를 확인하기 전에

어떤 출력이 나오게 될지 한번 예상해 보시기 바랍니다.

반응형

 

더보기

 우선 빌드합니다.

go build args_echo1.go
./args_echo1 1 2 3 4

 

출력 결과는 다음과 같습니다.

./args_echo1 1 2 3 4
[./args_echo1 1 2 3 4]

 

아직 슬라이스 사용에 대한 내용을 다루지 않았기에

이번 포스팅에서는 os.Args에 어떤 데이터가 담기는지

확인하는 예제를 끝으로 마무리하려고 합니다.

 

 

다음 포스팅으로 또 찾아뵙겠습니다.

감사합니다.

 

 

 

wh.