패키지 접두사 없이 패키지 함수 호출
Go에서 패키지를 가져오면 내보낸 식별자가 가져오는 패키지의 범위에 효과적으로 복사됩니다. 그러나 패키지 이름을 접두사로 사용하지 않고 패키지 기능에 액세스하려는 경우가 있습니다. 이 질문에서는 이를 달성하기 위한 다양한 방법을 탐구합니다.
한 가지 접근 방식은 "점 가져오기" 기술입니다. Go 사양에 따르면 패키지 이름 없이 마침표(.)를 사용하면 해당 패키지에서 내보낸 모든 식별자를 현재 패키지의 파일 범위로 가져옵니다. 이렇게 하면 접두사 없이 가져온 함수에 직접 액세스할 수 있습니다.
<code class="go">package main import . "fmt" // import all exported identifiers from "fmt" func main() { Println("hey there") }</code>
그러나 이 기술은 식별자 소스를 모호하게 하여 코드를 읽기 어렵게 만들 수 있으므로 Go 커뮤니티에서는 권장되지 않습니다.
또는 원하는 함수를 참조하는 패키지 수준 변수를 선언할 수도 있습니다. 이 접근 방식에는 패키지를 가져오고 함수에 대한 참조를 보유하는 변수를 선언하는 작업이 포함됩니다.
<code class="go">package main import ( "fmt" ) var Println = fmt.Println // declare a package-level variable referencing fmt.Println func main() { Println("Hello, playground") }</code>
마지막으로 유형 별칭을 사용하여 가져온 패키지에 선언된 유형을 참조할 수 있습니다.
<code class="go">package main import ( "fmt" ) type ScanState = fmt.ScanState // type alias fmt.ScanState func main() { // use ScanState as a type without the "fmt." prefix }</code>
이러한 방법은 함수를 호출할 때 패키지 이름 앞에 접두사를 붙이는 것을 방지하는 방법을 제공하지만 Go 커뮤니티에서는 일반적으로 명시적인 이름 지정과 점 가져오기 방지를 권장한다는 점에 유의하는 것이 중요합니다.
위 내용은 패키지 접두사를 사용하지 않고 Go에서 패키지 함수를 어떻게 호출할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!