[GoLang] 이차원 Slice 값 추가 시 에러 panic: runtime error: index out of range [0] with length 0

2023. 10. 31. 13:02· Go Lang/Error
목차
  1. 문제
  2. 해결법

문제

GoLang은 2차원 slice부터 값을 추가할 때.

slice에 len(length)과 cap(capacity)을 지정하지 않으면  인덱스를 통한 접근에서 에러가 발생합니다.

 

다음이 에러가 발생하는 예제입니다.

package main

func main() {
	var slices [][]int

	for i := 0; i < 3; i++ {
		for j := 0; j < 5; j++ {
			slices[i][j] = i + j
		}
	}
}

에러는 다음과 같습니다.

panic: runtime error: index out of range [0] with length 0

panic: runtime error: index out of range [0] with length 0

goroutine 1 [running]:
main.main()
	C:/~/code/go/learn-go/ex/ex4.go:9 +0x1e
exit status 2

처음 저 에러를 맞닥뜨리게 되면 혼란스러울 것입니다.

 

분명 내가 배웠던 slice는 cap, len을 지정 안 해도 메모리 공간이 부족하면

기존의 크기에서 2배로 늘리기에 자동으로 메모리를 할당 받으므로 크기를 지정하지 않아도 알아서 잘 될텐데라는 생각하면서 말이죠

 

해결법

해결법은 간단합니다.

 

slices에서 접근할 수 없는 인덱스를 사용해서 에러가 났다면 인덱스를 사용하지 않게 수정합니다.

Q : 예? 그게 무슨 말이죠?A : 간단합니다

 

아래 방법처럼 이차원 slice에 일차원 slice를 append 하는 방법으로  해결할 수 있습니다.

package main

import "fmt"

// 2차원 슬라이스
func main() {
	var slices = [][]int{}

	for i := 0; i < 3; i++ {
		var slice = []int{}
		for j := 0; j < 5; j++ {
			slice = append(slice, i+j)
		}
		slices = append(slices, slice)
	}
	fmt.Println(slices)
}

결과 값은 다음처럼 정상적으로 출력됩니다.

[[0 1 2 3 4] [1 2 3 4 5] [2 3 4 5 6]]

 

 

반응형

'Go Lang > Error' 카테고리의 다른 글

Go Echo "github.com/labstack/echo/v4" 에러 해결 법  (0) 2022.08.05
[Go lang] exit status 259 에러  (0) 2022.08.03
  1. 문제
  2. 해결법
'Go Lang/Error' 카테고리의 다른 글
  • Go Echo "github.com/labstack/echo/v4" 에러 해결 법
  • [Go lang] exit status 259 에러
DSeung
DSeung
DSeung
Dev log
DSeung
  • 분류 전체보기 (193)
    • PHP (62)
      • Laravel (31)
      • Error (5)
      • Setting (11)
      • Modern PHP (15)
    • Go Lang (51)
      • Study (30)
      • Algorithm (17)
      • Setting (1)
      • Error (3)
    • Java (11)
      • Spring (3)
      • JSP (0)
      • Error (2)
      • Setting (2)
      • 단축키 (2)
    • JavaScript (6)
      • Modern JavaScript (4)
      • Node (1)
    • Android Kotlin (5)
      • Study (4)
      • Error (1)
    • 컴퓨팅 기술 (12)
      • 데이터베이스시스템 (4)
      • Docker (2)
      • 크롤링 & 스크래핑 (1)
      • API (1)
      • 클라우드 (1)
      • 네트워크 (1)
    • MySQL (7)
    • AWS (1)
    • Git (5)
      • GItLab (1)
      • GitHub (4)
    • 도메인 (2)
      • 안과 (2)
    • 자격증 (7)
      • SQLD (1)
      • 정보처리기사 (6)
    • Mac os (1)
    • 나머지 (13)
      • tistory (1)
      • 기타 (9)
      • 일기 (3)
    • 독서 (10)

인기 글

최근 글

블로그 메뉴

  • 홈
  • 태그
전체
오늘
어제
hELLO · Designed By 정상우.v4.2.0
DSeung
[GoLang] 이차원 Slice 값 추가 시 에러 panic: runtime error: index out of range [0] with length 0
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.