Go의 일반 함수: 종합 안내서
Go를 탐색하는 동안 빈 인터페이스의 개념을 접할 수 있습니다. 이는 추가 메서드가 필요 없이 모든 유형을 담을 수 있는 강력한 도구입니다.
다음 예를 고려하세요.
func describe(i interface{}) { fmt.Printf("Type: %T | Value: %v\n", i, i) }
설명하기 위해 다양한 유형을 전달하면 유형과 값이 인쇄됩니다.
"Type: int | Value: 5" // for i := 5 "Type: string | Value: test" // for i := "test"
그럼 이것이 Go의 일반 기능 구현 방식인가요? 좀 빠지는. Go 1.18부터 이제 진정한 일반 함수를 작성할 수 있습니다. 예는 다음과 같습니다.
package main import ( "fmt" ) // T can be any type func Print[T any](s []T) { for _, v := range s { fmt.Print(v) } } func main() { // Passing list of string works Print([]string{"Hello, ", "world\n"}) // You can pass a list of int to the same function as well Print([]int{1, 2}) }
출력:
Hello, world 12
이 일반 함수 Print는 모든 유형의 슬라이스를 처리할 수 있으며 일반 프로그래밍에 대해 보다 다양하고 유형이 안전한 접근 방식을 제공합니다.
위 내용은 Go의 빈 인터페이스 또는 Go 1.18 Generics가 일반 기능의 진정한 구현입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!