>  기사  >  백엔드 개발  >  golang에서 슬라이스를 사용하는 방법

golang에서 슬라이스를 사용하는 방법

PHPz
PHPz원래의
2023-04-27 09:08:491076검색

golang은 매우 효율적이고 배우기 쉬운 프로그래밍 언어로 실제 프로젝트 개발에 널리 사용되었습니다. 슬라이스는 golang에서 매우 중요한 데이터 구조로, 이를 통해 배열과 슬라이스를 보다 편리하게 운영할 수 있습니다. 이번 글에서는 golang에서 슬라이스를 사용하는 방법을 소개하겠습니다.

1. 슬라이스 정의 및 초기화

golang에서는 슬라이스를 사용하여 배열의 크기를 동적으로 조정할 수 있습니다. 슬라이스는 기본 배열에 대한 포인터, 길이 및 용량으로 표시됩니다. 슬라이스의 길이는 포함된 요소 수를 나타내고, 용량은 보유할 수 있는 요소 수를 나타냅니다. 따라서 다음과 같은 방법으로 슬라이스를 정의하고 초기화할 수 있습니다.

var slice []int             // 通过 var 关键词声明一个空切片
slice1 := make([]int, 5)    // 通过 make 函数创建一个长度为 5 的切片
slice2 := []int{1, 2, 3}    // 直接指定切片中的元素
slice3 := []int{0: 1, 2: 3} // 通过索引初始化切片中的元素

2. 슬라이스에 요소 추가

add() 함수를 사용하여 슬라이스에 요소를 추가하면 자동으로 슬라이스가 확장됩니다(필요한 경우). 예는 다음과 같습니다.

slice = append(slice, 1) // 在 slice 的末尾添加一个元素
slice = append(slice, 2, 3) // 在 slice 的末尾添加两个元素

요소 추가 시 슬라이스의 길이가 용량을 초과하면 add() 함수가 자동으로 용량을 확장한다는 점에 유의하세요. 확장할 때 golang은 새로운 기본 배열을 생성하고 원래 요소를 새 배열에 복사합니다. 따라서 여러 루프의 슬라이스에 많은 수의 요소를 추가하는 것은 권장되지 않습니다. 이렇게 하면 확장 작업이 자주 발생하고 성능에 영향을 미치기 때문입니다.

3. 슬라이스에서 요소 삭제

golang에서 슬라이스의 요소 삭제는 일반적으로 값을 다시 할당하여 수행됩니다. 일반적인 구현은 다음과 같습니다.

slice = append(slice[:i], slice[i+1:]...) // 从切片中删除第 i 个元素

이 코드는 원본 슬라이스를 두 부분으로 분할한 다음 함께 병합합니다. 이 중, 슬라이스[:i]는 슬라이스의 시작부터 i번째 요소(i번째 요소 제외)까지를 의미하고, 슬라이스[i+1:]는 i+1번째 요소부터 끝까지를 의미한다. 슬라이스의. 두 조각 중 하나에는 유지해야 하는 모든 요소가 포함되어 있고 다른 하나에는 삭제해야 하는 요소가 포함되어 있지 않습니다. 마지막으로 ... 연산자를 사용하여 이들을 결합합니다.

또한 copy() 함수를 사용하여 요소를 삭제할 수도 있습니다. 예는 다음과 같습니다:

copy(slice[i:], slice[i+1:]) // 从切片中删除第 i 个元素
slice = slice[:len(slice)-1] // 删除切片中的最后一个元素

위 코드에서 copy() 함수는 삭제해야 하는 요소 뒤의 모든 요소를 ​​한 위치 앞으로 이동하고 마지막으로 목적을 달성하기 위해 슬라이스의 길이를 1만큼 줄입니다. 요소를 삭제하는 중입니다.

4. 슬라이스 복사 및 가로채기

Golang은 슬라이스를 복사하고 가로채는 두 가지 내장 함수인 copy()와 Append()를 제공합니다. 아래에서는 이 두 함수의 사용법을 각각 소개합니다.

  1. copy() 함수
var slice1 []int // 定义一个空切片
slice2 := make([]int, 5) // 创建一个长度为 5 的切片
copy(slice1, slice2) // 将 slice2 复制到 slice1 中

copy() 함수는 두 슬라이스의 동일한 요소만 복사한다는 점에 유의해야 합니다. 소스 슬라이스의 길이가 대상 슬라이스의 길이보다 길면 대상 슬라이스에 수용할 수 있는 요소만 복사되고 초과하는 요소는 잘립니다. 대상 슬라이스의 길이가 소스 슬라이스의 길이보다 길면 대상 슬라이스의 초과 요소가 기본값으로 설정됩니다.

  1. append() 함수
var slice1 []int // 定义一个空切片
slice2 := []int{1, 2, 3} // 创建一个切片并初始化
slice1 = append(slice1, slice2...) // 将 slice2 追加到 slice1 中

append() 함수를 사용할 때 슬라이스를 다른 슬라이스에 추가하는 경우 확장하려면 ... 연산자를 사용해야 한다는 점에 유의해야 합니다. 이러한 방식으로 소스 슬라이스가 대상 슬라이스에 전체적으로 추가되는 대신 소스 슬라이스가 대상 슬라이스로 확장됩니다.

5. 슬라이스 순회

golang의 for 루프를 사용하여 슬라이스의 요소를 순회할 수 있습니다. 예는 다음과 같습니다:

for i, val := range slice {
    fmt.Printf("Index: %d, Value: %d\n", i, val)
}

위 코드에서 for 루프의 범위 형식은 슬라이스의 요소를 반복하는 데 사용됩니다. 그 중 i는 요소의 인덱스를 나타내고, val은 요소의 값을 나타낸다. 보시다시피, range를 사용하면 슬라이스의 요소를 더 편리하게 탐색할 수 있으며, 이는 golang에서 권장되는 탐색 방법이기도 합니다.

요약:

이 글에서는 golang의 슬라이스 정의 및 초기화, 슬라이스에 요소 추가, 슬라이스에서 요소 삭제, 슬라이스 복사 및 가로채기, 슬라이스 탐색을 소개합니다. 슬라이스는 배열 작업을 크게 단순화할 수 있는 일반적인 데이터 구조입니다. 따라서 Golang 개발자가 슬라이스 사용법을 익히는 것은 매우 중요합니다.

위 내용은 golang에서 슬라이스를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.