> 백엔드 개발 > Golang > 함수 전달을 위해 Go 배열을 슬라이스로 변환하는 방법은 무엇입니까?

함수 전달을 위해 Go 배열을 슬라이스로 변환하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-12 18:28:22
원래의
449명이 탐색했습니다.

How to Convert Go Arrays to Slices for Function Passing?

Go에서 배열을 슬라이스로 변환

Go로 작업할 때 추가 처리를 위해 배열을 슬라이스로 변환해야 하는 상황이 발생할 수 있습니다. 배열은 고정된 크기의 요소 모음인 반면, 슬라이스는 동적이며 필요에 따라 늘어나거나 줄어들 수 있습니다.

다음 시나리오를 고려해보세요. 바이트 배열을 반환하는 함수가 있습니다.

func Foo() [32]byte {...}
로그인 후 복사

이 함수의 결과를 바이트 조각을 기대하는 다른 함수에 전달하려고 합니다.

func Bar(b []byte) { ... }
로그인 후 복사

단순히 다음과 같이

d := Foo()
Bar(d)
로그인 후 복사

하면 유형 불일치로 인해 컴파일 오류가 발생합니다. 배열을 슬라이스로 변환하려면 [:] 구문을 사용하여 기본 배열을 가리키는 슬라이스 헤더를 생성할 수 있습니다.

func main() {
    x := Foo()
    Bar(x[:])
}
로그인 후 복사

이 작업은 기본 데이터의 복사본을 생성하지 않습니다. 대신 배열과 동일한 메모리 위치를 참조하는 슬라이스 헤더를 생성합니다.

다음은 배열을 Bar 함수로 변환하고 전달하는 방법을 보여주는 완전한 예입니다.

func Foo() [32]byte {
    return [32]byte{'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}
}

func Bar(b []byte) {
    fmt.Println(string(b))
}

func main() {
    x := Foo()
    Bar(x[:])
}
로그인 후 복사

위 내용은 함수 전달을 위해 Go 배열을 슬라이스로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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