백엔드, 기타/Golang

Golang 1. 기본 문법 2)배열, slice, map

데브힐러 2020. 8. 13. 05:27
반응형

1. 배열

 

  • 선언
//3가지 모두 가능
var a [5]int = [5]int{11,22,33,44,55}
var a = [5]int{11,22,33,44,55}
a:= [5]int{11,22,33,44,55}

 

 

  • ...를 사용하면 초기화할 배열 요소(값)의 개수에 따라 자동으로 크기 설정
x := [...]string{"train", "airplane", "car", "bus"}
//초기화 할 요소가 4개이며 ...에따라 배열 크기는 자동적으로 4로 설정된다.

 

 

2. 슬라이스

 

  • 선언
var a []int = make([]int, 5) //슬라이스 길이 : 5
var b = make([]int, 5)
c := make([]int, 5)

var d = make([]int, 5, 10) //길이가 5이고 용량이 10인 슬라이스 생성

 

 

슬라이스 붙이기(append)

a := []int{1,2,3}
b := []int{4,5,6}

a = append(a, b...) //슬라이스 a에 슬라이스 b를 붙임

 

 

슬라이스 복사(copy)

a := []int{1,2,3,4,5}
b := make([]int, 3) //공간 3만큼 할당

copy(b, a) // 슬라이스 a의 요소를 b에 복사함

fmt.Println(a) //[1 2 3 4 5] 출력
fmt.Println(b) //[1 2 3] 출력

 

 

3. 맵

 

  • 선언

       맵은 make함수로 공간을 할당해야 값을 넣을 수 있다.

var m map[string]int //선언

//key는 string, value는 int인 맵에 make함수로 공간 할당
var a map[string]int = make(map[string]int) 


var b = make(map[string]int)

c := make(map[string]float32)
c["barcode1"] = 3345.2956 //맵에 데이터 저장


//맵을 생성하며 키와 값을 초기화
d := map[stirng]int{
	"Kim" : 29,
    "Park" : 32,
}

 

 

맵에서 키 찾아 값(value) 출력하기

solarSystem := make(map[string]float32)

	solarSystem["Mercury"] = 87.979
	solarSystem["Venus"] = 224.3434
	solarSystem["Earth"] = 365.0348
	solarSystem["Mars"] = 686.9600
	solarSystem["Jupiter"] = 434.979
	solarSystem["Saturn"] = 34.246
	solarSystem["Uranus"] = 6012.3435
	solarSystem["Neptune"] = 2324.2435

	value, ok := solarSystem["Pluto"]
	fmt.Println(value, ok) //0, false 

	if value, ok := solarSystem["Uranus"]; ok{
		fmt.Println(value) //6012.3435
	}

//맵 모든 값 출력
	for key, value := range solarSystem{
		fmt.Println(key, value)
	}

//멥에서 Mercury키 삭제
delete(solarSystem, "Mercury")

 

 

맵 안에 맵 만들기 map[키의_자료형]map[키의_자료형]값의_자료형

func main() {
	terrestrialPlanet :=
		map[string]map[string]float32{
			"Mercury": map[string]float32{
				"meanRadius":    2439.7,     //	반지름
				"mass":          3.3022e+23, // 질랑
				"orbitalPeriod": 87.979,     //공전주기
			},
			"Venus": map[string]float32{
				"meanRadius":    6051.8,
				"mass":          4.8676e+24,
				"orbitalPeriod": 224.70069,
			},
			"Earth": map[string]float32{
				"meanRadius":    6371.0,
				"mass":          3.3022e+23,
				"orbitalPeriod": 365.25641,
			},
			"Mars": map[string]float32{
				"meanRadius":    3389.5,
				"mass":          6.4185e+23,
				"orbitalPeriod": 686.9600,
			},
		}
		
	fmt.Println(terrestrialPlanet["Mars"]["mass"]) 
    //출력 : 6.4185E+23
}

 

 

 

 

반응형