(5) Go의 기본 - 자료 구조 - Arrays & slices, Map, Structs

Arrays

크기가 정해져있는 array를 만들 때 사용한다

1
2
names := [3]string{"Hi", "Hello", "Bye"}
fmt.Println(names, names[0])

Slice

C++의 std::vector와 비슷하다. 크기가 정해져있지 않은 array이며, 원하는대로 element를 계속 추가할 수 있다.

1
2
3
names_slice := []string{"Hi", "Hello", "Bye"}
names_slice = append(names_slice, "Hi again!")
fmt.Println(names_slice)

 


Map

Hash table 형태로 저장할 수 있는 자료구조이다. Python에서 dictionary, 또는 C++ 에서 std::unordered_map과 비슷하다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
func main() {
name_and_age := map[string]int{"Harry":15,"Ron":16}

for key, value := range name_and_age {
fmt.Println(key, value)
}

for _, value := range name_and_age {
fmt.Println(value)
}

for key, _ := range name_and_age {
fmt.Println(key)
}
}

 


Struct

C++에서 사용하는 struct처럼 만들 수 있다. 하지만 default constructor가 없다.

method도 구현할 수 있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
type person struct {
name string
age int
favourite_food []string
}

func main() {
favourite_food := []string{"ramen", "kimchi"}

harry := person{"harry", 15, favourite_food}
fmt.Println(harry)
fmt.Println(harry.name)

ron := person{name: "ron", age: 16, favourite_food: favourite_food}
fmt.Println(ron)
}