>  기사  >  백엔드 개발  >  golang 슬라이싱 방법을 사용하는 방법에 대해 이야기해 보겠습니다.

golang 슬라이싱 방법을 사용하는 방법에 대해 이야기해 보겠습니다.

PHPz
PHPz원래의
2023-03-29 11:26:34589검색

Go 언어(golang)의 슬라이스는 자동으로 늘어나고 줄어들 수 있는 동적 배열입니다. 슬라이스는 기본 배열에 대한 포인터, 요소 수 및 용량을 캡슐화하는 구조입니다.

슬라이싱 구현은 기본 배열을 기반으로 하기 때문에 슬라이싱 작업은 기본 배열에 크게 좌우됩니다. 이 글에서는 몇 가지 일반적인 슬라이싱 방법과 사용법에 대해 설명합니다.

  1. 슬라이스 만들기

먼저 슬라이스를 만들어야 합니다. 슬라이스를 생성하는 방법에는 make 함수를 사용하는 것과 직접 선언을 사용하는 두 가지 방법이 있습니다.

make 함수 사용:

a := make([]int, 5) //길이가 5인 정수 슬라이스 생성

make 함수는 두 개의 매개변수를 허용합니다. 첫 번째 매개변수는 슬라이스 요소의 유형이고, 두 번째 매개변수는 슬라이스 요소의 유형입니다. 두 매개변수는 슬라이스의 길이입니다. 용량을 지정하려면 세 번째 매개변수를 전달할 수 있습니다.

b := make([]string, 5, 10) //길이가 5이고 용량이 10인 문자열 슬라이스 생성

직접 선언 :

c := []int{1, 2, 3, 4, 5} //5개의 요소를 포함하는 정수 슬라이스를 생성합니다

이렇게 생성된 슬라이스의 길이와 용량은 동일합니다.

  1. 슬라이스에 대한 액세스

인덱스로 슬라이스 요소에 액세스하는 것은 배열과 동일합니다. 예를 들어, 첫 번째 요소에 액세스하려면 다음과 같이 할 수 있습니다:

fmt.Println(c[0])

  1. Modification of Slices

슬라이스는 변경 가능하므로 인덱스 값으로 요소를 수정할 수 있습니다. :

c[0] = 10 //첫 번째 요소를 10으로 변경

  1. 슬라이스에 추가

슬라이스의 추가 메서드를 사용하여 슬라이스에 요소를 추가합니다. 슬라이스 용량이 모든 요소를 ​​수용할 만큼 크지 않으면 자동으로 확장됩니다.

예를 들어 다음 방법을 사용하여 슬라이스 끝에 요소를 추가할 수 있습니다.

c = Append(c, 6, 7, 8) //슬라이스 끝에 요소 3개 추가

단일 요소인 경우 다음과 같이 작성할 수 있습니다. 쓰기:

c = Append(c, 9) //슬라이스 끝에 요소 추가

  1. 슬라이스 복사

복사 기능을 사용하여 슬라이스를 복사할 수 있습니다. 복사 함수의 첫 번째 매개변수는 대상 슬라이스이고, 두 번째 매개변수는 소스 슬라이스입니다.

예:

d := make([]int, len(c))
copy(d, c)

  1. 슬라이스 가로채기

슬라이스를 가로채려면 [start:end] 형식의 슬라이스를 사용하세요. 그리고 새로운 조각을 얻으세요. start는 가로챌 시작 위치(닫힌 간격)를 나타내고 end는 끝 위치(열린 간격)를 나타냅니다.

예:

e := c[2:5] //세 번째부터 다섯 번째 요소를 포함하는 슬라이스를 가로채기

start를 생략하면 기본값은 0이고, end를 생략하면 기본값은 슬라이스.

  1. 슬라이스 삭제

Go에서는 슬라이스 요소를 직접 삭제할 수 있는 방법이 없습니다. 그러나 새 슬라이스를 다시 작성하여 요소를 간접적으로 삭제할 수 있습니다.

예를 들어, 다음 코드를 사용하여 세 번째 요소를 삭제할 수 있습니다:

f := 추가(c[:2], c[3:]...)

이런 방식으로 f는 새로운 슬라이스입니다. 여기서 세 가지 요소가 제거되었습니다.

요약

슬라이싱은 매우 강력한 데이터 유형으로, 데이터를 보다 편리하게 운영할 수 있도록 도와줍니다. 이 기사에서는 생성, 액세스, 수정, 추가, 복사, 차단 및 삭제를 포함한 몇 가지 일반적인 슬라이스 작업 방법을 소개합니다. Go 언어의 슬라이싱을 마스터하고 싶다면 공식 문서를 읽어보면 이해가 깊어질 수 있습니다.

위 내용은 golang 슬라이싱 방법을 사용하는 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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