Go의 일반 함수: 인터페이스와 Go 1.18의 상호 작용 공개
Go에서 다양한 유형의 값을 처리하는 능력은 다음과 같습니다. 프로그래밍의 중요한 측면. 이 기사에서는 이 기능을 달성하기 위해 Go의 기본 디자인 개념인 인터페이스 사용을 살펴봅니다.
일반 함수에 인터페이스 활용
문서에서 언급했듯이 비어 있습니다. 인터페이스는 모든 유형의 값을 허용할 수 있습니다. 이는 특정 방법 요구 사항이 부족하다는 사실에서 비롯됩니다. 다음 예를 고려하십시오.
func describe(i interface{}) { fmt.Printf("Type: %T | Value: %v\n", i, i) }
이 함수는 아래에 설명된 것처럼 다양한 유형의 값을 처리할 수 있습니다.
describe(5) // "Type: int | Value: 5" describe("test") // "Type: string | Value: test"
이 접근 방식은 기본적인 형태의 일반 기능을 제공하여 동일한 기능을 허용합니다. 유형별 구현 없이 여러 유형을 처리할 수 있습니다.
Go 1.18: 일반을 위한 새로운 시대 프로그래밍
그러나 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
이 새로운 구문을 사용하면 모든 유형에서 작동할 수 있는 일반 함수를 정의할 수 있으므로 더욱 향상됩니다. Go 코드의 유연성과 유형 안전성. Go 1.18의 일반 함수는 여러 유형을 처리하는 보다 간결하고 강력한 접근 방식을 제공하므로 유형별 함수 구현이 필요하지 않습니다.
위 내용은 Go의 인터페이스와 Go 1.18 제네릭은 어떻게 일반 함수 프로그래밍을 가능하게 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!