Go의 숫자 데이터용 일반 함수
Go에서 계산기를 만들 때 정수와 부동 소수점의 차이를 처리하는 것이 어려울 수 있습니다. 이 문제에 접근하는 방법에는 다음을 포함하여 여러 가지가 있습니다.
모든 것을 부동 소수점으로 변환
이 접근 방식에는 부동 소수점의 범위가 정수보다 넓기 때문에 모든 입력을 부동 소수점으로 변환하는 작업이 포함됩니다. 그러나 이로 인해 큰 정수의 경우 정밀도 문제가 발생할 수 있습니다.
각 유형에 대해 별도의 함수 생성
또는 addInt와 같이 각 유형에 대해 별도의 함수를 생성할 수도 있습니다. 그리고 Float를 추가하세요. 이는 명확한 접근 방식이지만 코드 중복 및 상용구로 이어질 수 있습니다.
제네릭 활용(Go 1.18 이상)
Go 1.18에 제네릭 도입 , 보다 우아한 솔루션을 사용할 수 있게 됩니다. 숫자 유형으로 제한된 유형 매개변수를 사용하여 일반 함수를 정의할 수 있습니다:
func add[T Number](a, b T) T { return a + b }
숫자 제약조건은 golang.org/x/exp/constraints 패키지를 사용하여 정의할 수 있습니다:
import ( "golang.org/x/exp/constraints" ) type Number interface { constraints.Integer | constraints.Float }
이 일반 함수를 사용하면 모든 숫자 유형(정수, 부동 소수점, 심지어 복소수)에 대한 덧셈을 수행할 수 있습니다. 숫자):
fmt.Println(add(1, 2)) // 3 (int + int) fmt.Println(add(1.5, 3.2)) // 4.7 (float64 + float64)
제한 사항
일반 함수는 유연성을 제공하지만 다음 제한 사항에 유의하세요.
제네릭을 활용하면 간결하고 재사용 가능한 코드를 작성할 수 있습니다. Go 프로그램에서 수치 데이터를 원활하게 처리합니다.
위 내용은 Go Generics는 어떻게 수치 계산을 단순화할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!