프로그래밍/GO

Golang 초보 예제 프로그램 전화번호부 애플리케이션 개발 시리즈 Phone book program #1 beginner friendly

autostar 2023. 2. 28.
반응형

전화번호부 커맨드라인 어플리케이션 만들기 시리즈 첫번째

 

진행방향

고 언어로 전화번호부 어플을 만들어보려고 해요. 처음엔 기초적인 뼈대를 만들고, 점차 살을 붙여나가는 방식으로 진행될 예정입니다. 

처음엔 코드 내부에 하드코딩한 데이터를 활용하여 검색하는 커맨드라인 입력 구현합니다. 

이번장에서는 이름을 입력받아 검색되는 내용을 보여주는 search 와 list 를 구현합니다.

 

잠깐만요☺️

아직 기능들이 추가되지 않기 때문에 ...🐱

 * 데이터를 바꾸려면 소스코드에서 직접 바꿔야 합니다요.

 * 정렬기능 같은거 없습니다요.

 * 외부 파일에 데이터를 저장하거나 불러올 수 없습니다요.

 * 하드코딩 데이터기 때문에 바이너리 배포 불가능하다요.

 

 

이 예제는 😁

 * Name, Tel 2개의 필드를 갖는 데이터 타입 구조체로 전화번호의 목록을 가지고 있습니다요. 

 * 전화번호 데이터 구조체의 슬라이스를 갖고 있는 전역변수 data가 있슴요.

 * search 와 list 커맨드를 구현하는 두개의 함수가 있습니다.

 * 전역 변수 data의 내용은 main() 안에서 append를 사용해 정의합니다.

 * 필요에 따라 data 슬라이스의 내용을 추가하거나 삭제할 수 있....

 * 프로그램은 한번에 하나의 작업만 수행합니다.

 

 

실습하기 

먼저 파일을 만들어야 겠죵

go mod init 도 잊지 말아주세요.. 잊을수가 없긴하죠 실행이 안될거닊...

패키지 메인으로 해주고 

저는 구조체를 Phonebook 으로 만들어봤어요

간단하게 이름이랑 번호만 넣을 수 있게 만들었습니다. 여러분은 성 이름 으로 더 업그레이드 하셔서 진행하셔도 되요 

 

data 라는 변수에 구조체 배열로 받습니다. 구조체를 이용해서 데이터를 넣을건데 그를 위함이에요

 

검색과 리스트 함수를 만들어 줍니다.

검색은 인자를 받고 for 문을 돌립니다. 인자가 os.Args 인데 이것은

배열 타입이기 때문이죠 첫번째 인자는 파일 정보를 담고, 두번째 인자부터 사용자 인풋을 받습니다. 

os.Args는 메인함수에 정의해놓았습니다.

그 밑에 데이터를 하드 코딩 해놓았고요

그다음엔 스위치로 이것이 search 냐 list냐를 나누어서 실행합니다.

arguments 가 os.Args 인자를 받는데 첫번째는 파일 정보이기 때문에 두번째는 search 이거나 list 여야 하고, search 일때는 세번째 인자를 받아야 합니다. 그래서 search 인데 입력받은 인자 길이가 3개가 아니면 "Usage : search name" 을 출력하고, 맞다면 result 로 넘어가게 됩니다. 또 result 에서 넘겨받은 인자를 아까 정의해둔 search 함수에 보냅니다.

 

search 함수에서 for 루프를 돌면서 배열로 담은 data 값과 하나씩 대조합니다. 결과값을 받은 것을 포인터로 출력합니다.

list 도 마찬가지로 for 문을 돌면서 데이터를 출력합니다.

 

그리고 default 를 정의해 두는 것이 좋습니다. 예기치 못한 상황을 방지할 수 있어요.

 

 

 

리스트 출력화면

아무것도 입력하지 않으면 이렇게 나옵니다. 앞에 test 값은 path.Base 함수로 얻은 값입니다. 폴더랑 모듈이 test 로 해놔서 그런지 이렇게 출력되네요

 

예제 완성 코드

 

연습하기 

이 예제는 한번 실행하고 종료되게 설계가 되어있습니다. 종료전까지 계속 이용할 수 있게 수정해 봅시다.

 

 
반응형

댓글