>백엔드 개발 >Golang >Go에서 숫자 유형에 대한 일반 함수를 작성하는 방법은 무엇입니까?

Go에서 숫자 유형에 대한 일반 함수를 작성하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-18 00:00:14592검색

How to Write a Generic Function for Numerical Types in Go?

Go에서 숫자 유형에 대한 일반 함수를 만드는 방법

JavaScript 및 TypeScript 사용자로서 Go에서 숫자 유형을 처리하는 방법이 궁금할 수 있습니다. int 및 float로 작업하는 동안. 이 기사에서는 모든 숫자 인수를 받아들일 수 있는 일반 함수를 생성하는 가장 좋은 방법을 탐구합니다.

Go 1.18 이상의 일반 함수

유형 매개변수 도입 Go 1.18에서는 이제 T 유형으로 매개변수화된 함수를 정의할 수 있습니다. 인터페이스 제약 조건을 활용하여 T를 숫자로 제한할 수 있습니다. 유형.

func add[T Number](a, b T) T {
    return a + b
}

여기서 제약 조건 Number는 golang.org/x/exp/constraints 패키지를 사용하여 정의됩니다.

type Number interface {
    constraints.Integer | constraints.Float
}

이 제약 조건은 T가 다음과 같은 유형이어야 함을 보장합니다. Constraints.Integer 또는 Constraints.Float를 충족합니다.

일반 사용 함수

이 일반 추가 함수는 모든 숫자 유형의 인수를 처리할 수 있습니다. 그러나 두 인수 모두 동일한 유형이어야 한다는 점에 유의하는 것이 중요합니다. 예를 들어:

fmt.Println(add(1, 2))     // 3
fmt.Println(add(a, b))     // 3
fmt.Println(add(1.5, 3.2)) // 4.7

add(2.5, 2)와 같은 유형을 혼합하려고 하면 컴파일 오류가 발생합니다.

복소수 지원

복수를 포함하도록 숫자 제약 조건을 확장할 수 있습니다. 유형:

type Number interface {
    constraints.Integer | constraints.Float | constraints.Complex
}

복합 유형에서 지원됨에도 불구하고 산술 연산자, -, * 및 /는 지원되는 유일한 연산자로 남아 있습니다. 복합 유형에는 모듈러스 % 및 비트 연산자가 지원되지 않습니다.

위 내용은 Go에서 숫자 유형에 대한 일반 함수를 작성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.