괴발개발 성장기

Study/Go 언어

[golang] 슬라이스(slice) 공부하기

지니유 2022. 2. 22. 22:37
반응형

# 슬라이스(slice)

자동으로 요소의 크기를 지정할 수 있다

# 슬라이스 선언

var 변수명 []타입

예시

var slice []int
  • 배열과 다르게 크기를 지정하지 않는다.
if len(slice)==0 {
        fmt.Println("현재 슬라이스 길이는 0 입니다.")
    }
  • 데이터의 값이 없어서 길이는 0이다.
    slice[0] =1
    fmt.Println("슬라이스 0 : ",slice[0]) //패닉 발생
  • panic: runtime error: index out of range [0] with length 0 에러 메시지가 뜬다.
  • 길이가 0인데 slice[0]에 값을 넣으면 패닉이 발생한다.

# 초기값 지정하는 방법

1) {}를 이용하는 방법

 
 변수명 := []타입{값1,값2,....}
 변수명 := []타입{1:값1, 4:값4}

예시

	nums1 := []int{1,2,3}
	nums2 := []int{1:5,10:2,15:3}
	fmt.Println("nums1 결과값: ",nums1)
	fmt.Println("nums2 결과값: ",nums2)

	str := []string{"안녕하세요","유지니", 5:"하하하"}
	boolean := []bool{true,3:false}
	float := []float64{3.0, 5:5.2}
	fmt.Println("string 예시 :",str)
	fmt.Println("boolean 예시 :",boolean)
	fmt.Println("float 예시 :",float)

결과

nums1 결과값:  [1 2 3]
nums2 결과값:  [0 5 0 0 0 0 0 0 0 0 2 0 0 0 0 3]
string 예시 : [안녕하세요 유지니    하하하]
boolean 예시 : [true false false false]
float 예시 : [3 0 0 0 0 5.2]

2) make 이용하는 방법

var 변수명 = make([]타입, 길이)

예시

	var m = make([]int, 3)
	m[1]=5
	fmt.Println("make 의 예시 : ",m)
  • int의 기본 값은 0이다.
  • 길이를 3으로 만들었다. 
  • index를 0,1,2 중에 값을 넣을 수 있다 ex) m[1]=5

결과

make 의 예시 :  [0 5 0]

# 슬라이스 읽기

  • 배열과 똑같은 방법으로 for문이나 for range를 이용해서  읽을 수 있다.

예시

	for i := 0; i < len(nums1); i++{
		fmt.Println("for문 값:",nums1[i])
	}

	for _, v := range nums1 {
		fmt.Println("for range 값: ",v)
	}

결과

for문 값: 2
for문 값: 3
for range 값:  1
for range 값:  2
for range 값:  3

# 슬라이스에 값 추가하기(append)

  • 데이터를 추가 했을 때 길이가 늘어날 수 있다.
  • 추가할때 append 함수를 사용한다

# append 함수

appened(슬라이스변수명, 추가값)

1) 기존 변수를 복사해서 다른 변수에 넣고 값을 추가 하는 방법

예시

	add := []int{1,2}
	c := append(add,6)
	fmt.Println("add 값 : ", add)
	fmt.Println("c 값 : ", c)

결과

add 값 :  [1 2]
c 값 :  [1 2 6]

2) 기존 변수에 바로 추가하는 방법

예시

add2 := []int{1,2,3}
add2 = append(add2,6)
fmt.Println("add2 값 : ", add2)

결과

add2 값 :  [1 2 3 6]

3) 여러가지 값을 넣는 방법

예시

add3 := []int{1,2}
add3  = append(add3,6,4,2)
fmt.Println("add3 값 : ", add3)

결과

add3 값 :  [1 2 6 4 2]

4) for문을 이용해서 값 넣는 방법

예시

var add4 []int
fmt.Println("for문 전 add4 값 : ", add4)
for i := 0; i < 10; i++{
   add4 = append(add4,i)
}
fmt.Println("for문 후 add3 값 : ", add4)

결과

fmt.Println("for문 후 add4 값 : ", add4)

 

반응형