> 백엔드 개발 > Golang > 골랑 슬라이스 리버스

골랑 슬라이스 리버스

PHPz
풀어 주다: 2023-05-16 19:18:07
원래의
1591명이 탐색했습니다.

Go 언어의 슬라이스는 매우 일반적으로 사용되며 쉽게 추가, 삭제, 수정할 수 있습니다. 그러나 때로는 슬라이스 요소를 반전시켜야 합니다. 예를 들어 {1, 2, 3, 4, 5}를 {5, 4, 3, 2, 1}로 반전합니다. 이 기사에서는 Go 언어를 사용하여 구현하는 방법을 소개합니다. 슬라이싱.

  1. 루프를 사용하여 달성

슬라이스 반전은 실제로 슬라이스의 요소를 역순으로 배열하는 것이며, 이는 루프를 사용하여 달성할 수 있습니다. 구체적인 방법은 슬라이스의 첫 번째 요소를 끝으로 이동하고 두 번째 요소를 두 번째에서 마지막으로 이동하는 것입니다. 슬라이스의 길이가 홀수인 경우 중간 요소를 교체할 필요가 없다는 점에 유의해야 합니다.

다음은 루프를 사용한 코드 구현입니다.

func reverse(s []int) {
    for i := 0; i < len(s)/2; i++ {
        j := len(s) - i - 1
        s[i], s[j] = s[j], s[i]
    }
}
로그인 후 복사

코드의 reverse 함수는 int 유형의 슬라이스를 매개변수로 받아 이 슬라이스를 반전시킵니다. 먼저 for 루프를 사용하여 슬라이스 요소의 전반부를 순회하고 이를 해당 마지막 요소와 교환합니다. 슬라이스의 마지막 요소의 인덱스는 len(s)-1이고, i에 해당하는 마지막 요소의 인덱스는 len(s)-i-1이므로 인덱스 j는 len(s)-i-1에 의해 얻어집니다. 번째 요소는 len(s) -i-1입니다. 슬라이스 길이가 홀수인 경우 중간 요소를 교체할 필요가 없습니다.

이 함수를 사용하여 모든 길이의 int 유형 슬라이스를 뒤집을 수 있습니다. 예:

func main() {
    s1 := []int{1,2,3,4,5}
    reverse(s1)
    fmt.Println(s1)

    s2 := []int{2,4,6,8,10,12}
    reverse(s2)
    fmt.Println(s2)
}
로그인 후 복사

출력 결과는 다음과 같습니다.

[5 4 3 2 1]
[12 10 8 6 4 2]
로그인 후 복사
로그인 후 복사
  1. 표준 라이브러리 함수를 사용하여

루프를 사용하는 것 외에도 표준 라이브러리 함수를 사용하여 라이브러리는 슬라이스를 반전하는 기능도 제공합니다. 이 함수는 sort 패키지에 정의되어 있으며 다음과 같이 사용됩니다.

package main

import (
    "fmt"
    "sort"
)

func main() {
    s1 := []int{1,2,3,4,5}
    sort.Slice(s1, func(i, j int) bool { return i > j })
    fmt.Println(s1)

    s2 := []int{2,4,6,8,10,12}
    sort.Slice(s2, func(i, j int) bool { return i > j })
    fmt.Println(s2)
}
로그인 후 복사

코드의 sort.Slice 함수는 두 개의 매개변수를 받습니다. 첫 번째 매개변수는 반전할 슬라이스이고, 두 번째 매개변수는 정의하는 데 사용됩니다. 반전의 규칙. 이 함수에서는 i가 j보다 크면 true를 반환하여 i와 j를 앞으로 바꿔야 함을 나타냅니다.

sort.Slice 함수는 sort.Interface 인터페이스를 준수하는 유형에서만 작동할 수 있으므로 슬라이스의 요소 유형은 Len, Less 및 Swap 메소드를 구현해야 합니다. int 유형의 슬라이스에 대해 이러한 메소드를 구현했으므로 sort.Slice 함수를 직접 사용하여 역방향 작업을 수행할 수 있습니다.

sort.Slice 함수를 사용하여 슬라이스를 반전시키세요. 코드는 다음과 같습니다.

[5 4 3 2 1]
[12 10 8 6 4 2]
로그인 후 복사
로그인 후 복사

두 가지 방법 모두 실제 상황에 따라 어떤 방법을 사용할지 쉽게 선택할 수 있습니다. 한 번만 되돌려야 한다면 루프 방식을 사용하는 것이 좋습니다. 여러 번 되돌려야 한다면 sort.Slice 함수를 사용하는 것이 좋습니다. 정렬 규칙을 재사용하고 효율성을 높일 수 있기 때문입니다.

위 내용은 골랑 슬라이스 리버스의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿