GO 1.18에 소개 된 GO 1.18에 소개 된 GO의 GO의 제네릭에서 다양한 숫자 유형으로 작동하는 일반 기능을 작성하는 방법을 사용하면 유형의 어설 션이나 번거로운 유형 스위치에 의존하지 않고 다양한 유형에서 작동하는 기능을 작성할 수 있습니다. 숫자 유형의 경우 코드 재사용 성과 가독성이 크게 향상됩니다. 키는 패키지를 사용하여 일반 유형 매개 변수를 특정 숫자 유형 세트로 제한하는 것입니다.
>이 constraints
는 ,
, constraints
, , constraints.Integer
, constraints.Float,
package main import ( "fmt" "golang.org/x/exp/constraints" ) func Max[T constraints.Ordered](a, b T) T { if a > b { return a } return b } func main() { fmt.Println(Max[int](10, 5)) // Output: 10 fmt.Println(Max[float64](3.14, 2.71)) // Output: 3.14 //fmt.Println(Max[string]("hello", "world")) // This will result in a compile-time error }
Max
, constraints.Ordered
, int
, int8
를 포함하는 모든 유형과 함께 작동합니다. 지표가없는 유형 ( int16
)으로 사용하려고 시도하면 컴파일 타임 오류가 발생하여 런타임 충돌을 방지 할 수 있습니다. int32
Go의 제네릭은 유형의 어설 션없이 다양한 숫자 유형을 처리 할 수 있습니까? int64
uint
예, Go의 Generics는 유형 자제없이 다양한 숫자 유형을 처리 할 수 있습니다. 유형 제약 조건을 사용하면 명시 적 유형 확인 및 변환이 필요하지 않습니다. 유형 어설 션은 오류가 발생하기 쉬우 며 코드를 읽기 쉽게 만듭니다. 제약 조건을 사용하여 컴파일러는 컴파일 시간에 유형 안전을 시행하여 일반 기능과 함께 적절한 유형 만 사용하도록합니다. 앞의 예는 다음을 완벽하게 보여줍니다. 기능은 다양한 숫자 유형을 처리하기위한 uint8
문 또는 유형의 어설 션이 필요없이 일반 유형 uint16
에서 직접 작동합니다. uint32
코드 읽기 성과 효율성을 유지하는 데있어 일반 숫자 기능을 작성하는 데있어 가장 모범 사례는 무엇입니까? go : <.> Number
함수를 유지하십시오. 잘 정의 된 단일 작업을 수행하기위한 일반 함수를 설계하십시오. 이는 가독성과 유지 가능성을 향상시킵니다. 너무 많은 노력을 기울이는 지나치게 복잡한 일반 기능을 작성하지 마십시오. Integer
Float
기존 제약 조건을 활용하십시오. 패키지는 많은 유용한 제약 조건을 제공합니다. 절대적으로 필요한 경우가 아니라면 자신의 제약 조건을 정의하지 않도록 활용하십시오. 이것은 일관성을 보장하고 잠재적 오류를 피합니다. constraints
숫자 유형이있는 제네릭을 사용할 때 유형 관련 오류를 피하려면 어떻게해야합니까?
위 내용은 GO에서 다른 숫자 유형으로 작동하는 일반적인 기능을 어떻게 작성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!