본문 바로가기

IT/golang

Go! 폰북 예제

반응형

책에 나와있는 간단한 예제

구조체를 리스트형으로 선언하고, 하드코딩으로 넣어둔 데이터를 

전체를 보여주거나,

키를 넣어서 찾을수 있는 프로그램

package main

import (
	"fmt"
	"os"
	"path"
)

type Entry struct {
	Name string
	Surname string
	Tel string
}

var data = []Entry{}

func search(key string) *Entry {
	for i, v := range data {
		if v.Surname == key {
			return &data[i]
		}
	}

	return nil
}

func list(){
	for _, v := range data {
		fmt.Println(v)
	}
}

func main(){
	arguments := os.Args
	if len(arguments) == 1 {
		exe := path.Base(arguments[0])
		fmt.Printf("Usage: %s search|list <arguments>\n", exe)
		return
	}

	data = append(data, Entry{"AAA", "aaa", "1111"})
	data = append(data, Entry{"BBB","bbb", "2222"})
	data = append(data, Entry{"CCC","ccc","3333"})

	switch arguments[1] {
	case "search":
		if len(arguments) != 3 {
			fmt.Println("Usage: search Surname")
			return
		}

		result := search(arguments[2])
		if result == nil {
			fmt.Println("Entry not found:", arguments[2])
			return
		}
		fmt.Println(*result)

	case "list":
		list()

	default:
		fmt.Println("Not a valid option")
	}
}

c의 구조체와 동일하게 선언 type 이름 struct 로 선언하고 애부 데이터 는 {} 안에!

사용 선언

var data = []Entry{}

컬렉션 타입에서 반복자 꺼내 쓰는거는 range 로!

포인터와 주소 넘기는 *, & 는 c 에서 활용법과 동일함

반응형