English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

고락런 기본 튜토리얼

고락런 제어문

고락런 함수 & 메서드

고락런 구조체

고락런 슬라이스 & 배열

고락런 문자열(String)

고락런 포인터

고락런 인터페이스

고락런 병행

고락런 예외(Error)

고락런 다른 항목

Go 슬라이스 함수 매개변수로 사용

슬라이스은 유사한 유형의 요소를 저장하는 변할 길이의 시퀀스로, 동일한 슬라이스에 다른 유형의 요소를 저장할 수 없습니다. 인덱스 값과 길이를 가진배열와 같지만, 슬라이스의 크기는 조정할 수 있으며, 배열과 같이 고정된 크기를 가지지 않습니다. Go 언어에서는 슬라이스를함수이는 함수가 슬라이스의 복제를 가져오다는 것을 의미합니다.
스ライ스는 값과 슬라이스의 용량, 길이와 함께 함수에 전달되며, 슬라이스 포인터는 항상 기본 배열을 가리킵니다. 따라서 함수에 값 전달로 슬라이스를 변경하면, 함수 외부에 존재하는 슬라이스에 반영됩니다. 이 개념을 예제를 통해 설명해 보겠습니다:

//스ライ스를 함수에 전달
package main
import "fmt"
//슬라이스가 있는 함수
//값 전달을 통해
func myfun(element []string) {
    //지정된 슬라이스 수정
    element[2] = "Java"
    fmt.Println("수정된 슬라이스: ", element)
}
func main() {
    //스ライ스 생성
    slc := []string{"C#", "Python", "C", "Perl"}
    fmt.Println("초기 슬라이스: ", slc)
    //함수에 슬라이스 전달
    myfun(slc)
    fmt.Println("최종 슬라이스:", slc)
}

출력:

초기 슬라이스: [C# Python C Perl]
수정된 슬라이스: [C# Python Java Perl]
최종 슬라이스: [C# Python Java Perl]

사용 설명:위 예제에서 우리는 slc라는 슬라이스를 가지고 있습니다. 이 슬라이스는 myfun() 함수에 전달됩니다. 우리가 알다시피, 슬라이스 포인터는 항상 같은 참조를 가리키며, 함수 내에서 전달되어도 그렇습니다. 따라서 C, 인덱스值为2Java로 변경될 때. 이 변화는 함수 외부의 슬라이스도 반영되므로 수정된 마지막 슬라이스는 [c# Python Java perl]。

//함수에 슬라이스 전달
package main
import "fmt"
//값 전달을 통해
func myfun(element []string) {
    //이곳에서 우리는 단순히 슬라이스를 수정합니다
    //append 함수 사용
    //여기서 이 함수는 단순히
    //그 안에 존재하는 슬라이스 복제
    //이 함수는 원본 슬라이스를 수정하지 않습니다
    element = append(element, "Java")
    fmt.Println("수정된 슬라이스: ", element)
}
func main() {
    //스ライ스 생성
    slc := []string{"C#", "Python", "C", "Perl"}
    fmt.Println("초기 슬라이스: ", slc)
    //스ライ스 전달
    //함수로 이동
    myfun(slc)
    fmt.Println("최종 슬라이스: ", slc)
}

출력:

초기 슬라이스: [C# Python C Perl]
수정된 슬라이스: [C# Python C Perl Java]
최종 슬라이스: [C# Python C Perl]