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) }
|