선언 방법
var 변수명 [요소 수]타입
ex) var t [5]float64
//선언과 동시에 초기화
var t [5]float64 = [5]float64{24.0, 25.9, 27.8, 26.9, 26.2}
var nums [5]int
: 각 타입의 기본값(정수는 0)으로 채워짐days := [3]string{"mon","tue","wed"}
var temps [5]float64 = [5]float64{24.3, 26.7}
: 지정한 값으로 요소가 채워지고 남는 요소는 기본값으로 채워짐var s = [5]int{1:10, 3:30}
: index:값
의 형태로 특정 인덱스에 값을 채워넣고 남는 요소는 기본값으로 채워짐 (ex-0, 10, 0, 30, 0)x := [...]int{10, 20, 30}
: 길이가 뒤의 초기값 길이만큼 지정(지정된 이후엔 배열의 크기 고정됨. 정적배열)x := []int{10, 20, 30}
와 다름 : 길이가 늘어날 수 있음. 동적배열func main() {
nums := [...]int{10, 20, 30, 40, 50}
nums[2] = 300
for i:=0; i<len(nums); i++ { //len(배열명) : 길이를 반환
fmt.Println(nums[i])
}
{
func main() {
var t [5]float64 = [5]float64{24.0, 25.9, 27.8, 26.9, 26.2}
for i, v := range t { //range 배열명 : 요소를 순회하면서 (인텍스, 요소값) 반환
fmt.Println(i, v)
}
}
for i, v range 배열명 {
//fmt.Println(v) -> error. i를 선언했는데 사용하지 않아서.
fmt.Println(i, v) // -> 정상 실행
}
💡 인덱스값을 사용하고 싶지 않을땐?
for _, v:= range 배열명 {
fmt.Println(v) // -> 정상실행
}
_ : 빈칸지시자 (자리는 표시되지만 사용할 일 없다고 무시함)
( v를 무시하고 싶을 땐 그냥 i만 쓰면 된다. 하지만 i를 무시하고 싶을 때 i를 쓰지 않고 v만 쓰면 v가 첫번째 변수로 취급되어서 v에 인덱스가 들어가게 되기 때문에 빈칸지시자가 필요한 것)
func main() {
a := [5]int{1, 2, 3, 4, 5}
b := [5]int{500, 400, 300, 200, 100}
for i,v := range a {
fmt.Printf("a[%d] = %d\n", i, v)
}
/*
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
a[4] = 5
*/
fmt.Println()
for i,v := range b {
fmt.Printf("b[%d] = %d\n", i, v)
}
/*
b[0] = 500
b[1] = 400
b[2] = 300
b[3] = 200
b[4] = 100
*/
b = a // a배열이 b배열로 복사됨
fmt.Println()
for i,v := range b {
fmt.Printf("b[%d] = %d\n", i, v)
}
/*
b[0] = 1
b[1] = 2
b[2] = 3
b[3] = 4
b[4] = 5
*/
b = a
불가함. 에러발생. func main() {
// 이중배열 초기화는 이중 중괄호, 각 요소는 콤마 구분
a := [2][5]int{
{1, 2, 3, 4, 5},
{5, 6, 7, 8, 9},
//중괄호를 다음 줄에서 닫는 경우 마지막 요소 후에도 콤마를 찍어야함
}
//이중배열은 이중for문을 활용하여 순회한다
for _, arr := range a {
for _, v := range arr {
fmt.Print(v, " ")
}
fmt.Println()
}
}
// 1 2 3 4 5
// 5 6 7 8 9