Golang 슬라이스는 매우 일반적으로 사용되는 데이터 구조이며 자동 확장을 지원하고 프로그램 내에서 데이터를 쉽게 조작하고 수정할 수 있는 동적 배열입니다. 슬라이스의 길이는 동적으로 변경될 수 있으며 이는 코드에 많은 유연성을 제공합니다. 슬라이스를 사용하는 동안 요소를 추가하고 삭제하는 것은 매우 일반적인 작업입니다. 이 기사에서는 golang 슬라이스에서 요소를 추가하고 삭제하는 방법을 소개합니다.
먼저 요소 추가 및 삭제 프로세스를 더 잘 이해하기 위해 golang 슬라이스의 기본 작업을 검토해 보겠습니다. golang에서 슬라이스를 정의하려면 make 함수를 사용해야 합니다. 이 함수에는 세 개의 매개변수가 포함되어 있습니다. 첫 번째 매개변수는 슬라이스 유형을 지정하고, 두 번째 매개변수는 슬라이스 길이를 지정하며, 세 번째 매개변수는 용량을 지정합니다. 슬라이스.
예:
var s = make([]int, 3, 5)
위 코드는 길이가 3이고 용량이 5인 int 유형 슬라이스를 정의합니다. 첫 번째 매개변수는 우리가 정의한 int 유형이고 두 번째 매개변수는 슬라이스의 길이를 지정합니다. 세 번째 매개변수는 슬라이스 용량을 5로 지정합니다. 슬라이스의 용량은 길이보다 클 수 있지만 길이는 용량보다 클 수 없다는 점에 유의해야 합니다.
다음은 golang 슬라이스의 몇 가지 기본 작업입니다.
1) 슬라이스 요소에 액세스
var s = []int {1, 2, 3, 4, 5} fmt.Println(s[0]) // 输出1
2) 슬라이스 요소 수정
var s = []int {1, 2, 3, 4, 5} s[0] = 6 fmt.Println(s) // 输出[6 2 3 4 5]
3) 슬라이스의 길이와 용량 가져오기
var s = make([]int, 3, 5) fmt.Println(len(s)) // 输出3 fmt.Println(cap(s)) // 输出5
4) 슬라이스 작업
var s = []int {1, 2, 3, 4, 5} fmt.Println(s[1:3]) // 输出[2 3]
golang에는 슬라이스 요소를 추가하는 두 가지 방법이 있습니다. 즉, 추가 기능과 "+" 연산자를 사용하는 것입니다.
이제 이 두 가지 방법의 사용법을 각각 소개하겠습니다.
1) 추가 기능을 사용하여 요소를 추가합니다
golang에서는 추가 기능을 사용하여 슬라이스 요소를 동적으로 추가할 수 있습니다. 구문은 다음과 같습니다:
func append(s []T, vs ...T) []T
그 중 첫 번째 매개변수 s는 T 유형의 슬라이스이고 다음 매개변수 vs는 추가할 요소를 나타내는 역시 T 유형의 가변 매개변수 목록입니다. 이 함수의 반환 값은 추가된 요소를 포함하는 새로운 조각입니다.
예:
var s = []int {1, 2, 3, 4, 5} s = append(s, 6) fmt.Println(s) // 输出[1 2 3 4 5 6]
위 코드에서는 추가 기능을 사용하여 요소 6을 슬라이스에 추가한 다음 결과를 다시 원래 슬라이스에 저장합니다.
슬라이스에 여러 요소를 추가하려면 추가 기능 뒤에 이러한 요소만 전달하면 됩니다. 예:
var s = []int {1, 2, 3, 4, 5} s = append(s, 6, 7, 8) fmt.Println(s) // 输出[1 2 3 4 5 6 7 8]
슬라이스의 용량이 부족하면 추가 기능이 자동으로 용량을 확장하므로 시간 복잡도는 O(1)입니다.
2) 요소를 추가하려면 "+" 연산자를 사용하세요
추가 기능을 사용하는 것 외에도 golang에서 "+" 연산자를 사용하여 두 조각을 병합할 수도 있습니다. 이 연산자의 피연산자는 모두 슬라이스이고, 결과도 새로운 슬라이스입니다.
예를 들어 아래와 같습니다:
var s1 = []int {1, 2, 3} var s2 = []int {4, 5, 6} s := s1 + s2 fmt.Println(s) // 输出[1 2 3 4 5 6]
이 예에서는 두 개의 슬라이스를 추가하고 새 슬라이스 s를 얻습니다. "+" 연산자의 시간 복잡도는 O(n)입니다. 왜냐하면 새 배열을 열고 두 조각의 요소를 새 배열에 복사해야 하기 때문입니다.
golang 슬라이스의 요소를 삭제하려면 추가 기능을 사용하는 방법과 복사 기능을 사용하는 두 가지 방법이 있습니다.
1) 추가 기능을 사용하여 요소 삭제
추가 기능의 슬라이싱 작업을 사용하여 삭제할 요소와 그 뒤의 요소를 가로채고 다시 결합하는 기능을 사용할 수 있습니다. 구체적인 구현은 다음과 같습니다.
func Remove(slice []int, idx int) []int { return append(slice[:idx], slice[idx+1:]...) } func main() { var s = []int {1, 2, 3, 4, 5} s = Remove(s, 2) fmt.Println(s) // 输出[1 2 4 5] }
이 코드에서는 Remove 함수를 사용하여 슬라이스의 세 번째 요소를 삭제합니다. 먼저, 슬라이스0부터 idx-1까지의 요소와 슬라이스 idx+1부터 끝까지의 요소를 새로운 슬라이스로 결합합니다. 그런 다음 추가 기능을 사용하여 이 새 조각을 원래 조각에 다시 저장합니다. 추가 기능은 자동으로 용량을 확장하므로 새 슬라이스의 용량 부족을 걱정할 필요가 없습니다.
이 방법의 시간 복잡도는 O(n)입니다. 왜냐하면 n-1개의 요소를 새 슬라이스에 복사해야 하기 때문입니다.
2) 복사 기능을 사용하여 요소 삭제
추가 기능을 사용하는 것 외에도 복사 기능을 사용하여 golang 슬라이스의 요소를 삭제할 수도 있습니다. 복사 함수는 src 슬라이스의 요소를 dst 슬라이스에 복사하고 복사된 요소 수를 반환할 수 있습니다.
구체적인 구현은 다음과 같습니다.
func Remove(slice []int, idx int) []int { copy(slice[idx:], slice[idx+1:]) return slice[:len(slice)-1] } func main() { var s = []int {1, 2, 3, 4, 5} s = Remove(s, 2) fmt.Println(s) // 输出[1 2 4 5] }
이 코드에서는 Remove 함수를 사용하여 슬라이스의 세 번째 요소를 삭제합니다. 복사 기능을 사용하여 idx+1 이후의 모든 요소를 idx 위치에 복사한 다음 원본 슬라이스의 길이를 1만큼 줄입니다.
이 방법의 시간 복잡도도 O(n)이라는 점에 유의해야 합니다. 왜냐하면 n-1개의 요소를 새 슬라이스에 복사해야 하기 때문입니다.
이 글에서는 골랭 슬라이스에서 요소를 추가하고 삭제하는 작업을 주로 소개합니다. 추가 기능과 "+" 연산자를 사용하여 요소를 추가할 수 있고, 추가 기능과 복사 기능을 사용하여 요소를 삭제할 수 있습니다.
실제 프로그래밍에서는 구체적인 상황에 따라 다양한 방법을 선택하는 것이 좋습니다. 적은 수의 요소를 추가하거나 삭제하려면 추가 기능을 사용하는 것이 더 편리하고, 많은 수의 요소를 추가하거나 삭제하려면 "+" 연산자를 사용하는 것이 더 효율적입니다. 기능.
위 내용은 golang 슬라이스 추가 및 삭제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!