컴퓨터 프로그래밍에서 범주형 합산은 일반적인 문제입니다. 즉, 속성에 따라 숫자 집합을 분류하고 각 범주 내의 숫자를 합하는 것입니다. 이 문제는 통계, 데이터 마이닝, 데이터 분석 등과 같은 다양한 분야에 적용됩니다. 이번 글에서는 Golang을 이용하여 범주형 합산을 구현하는 방법을 소개하겠습니다.
먼저, 값과 카테고리라는 두 가지 속성을 포함하는 숫자를 나타내는 데이터 구조를 정의해야 합니다. Golang에서는 구조를 사용하여 이 데이터 구조를 구현할 수 있습니다. 코드는 다음과 같습니다.
type Data struct { value float64 category string }
다음으로 입력 데이터 세트를 카테고리에 따라 분류하고 각 카테고리 내의 숫자를 정렬하는 함수를 만들어야 합니다. . 이 함수는 데이터 목록을 입력으로 받아들이고 키가 카테고리이고 값이 해당 카테고리 내의 숫자의 합계인 사전을 반환해야 합니다. Golang에서는 지도 유형을 사용하여 이 사전을 구현할 수 있습니다. 코드는 다음과 같습니다.
func sumByCategory(dataList []Data) map[string]float64 { sumsByCategory := make(map[string]float64) for _, data := range dataList { sumsByCategory[data.category] += data.value } return sumsByCategory }
이 함수는 먼저 각 카테고리의 숫자 합계를 저장하기 위해 빈 지도를 만듭니다. 그런 다음 입력 데이터 목록을 반복하고 해당 범주의 합계에 각 숫자를 추가합니다. 마지막으로, 각 카테고리 내의 숫자 합계를 보유하는 맵을 반환합니다.
다음은 위에서 구현한 함수를 테스트하기 위한 완전한 샘플 프로그램입니다.
package main import "fmt" type Data struct { value float64 category string } func sumByCategory(dataList []Data) map[string]float64 { sumsByCategory := make(map[string]float64) for _, data := range dataList { sumsByCategory[data.category] += data.value } return sumsByCategory } func main() { dataList := []Data{ {2.0, "A"}, {3.2, "B"}, {4.5, "C"}, {1.8, "A"}, {2.3, "B"}, {5.1, "C"}, } sumsByCategory := sumByCategory(dataList) fmt.Println(sumsByCategory) }
이 프로그램을 실행하면 다음 결과가 출력됩니다.
map[A:3 B:5.5 C:9.6]
이 결과는 범주형 합계 함수가 범주에 따라 분류된 입력 데이터를 올바르게 합산한다는 것을 보여줍니다. , 각 카테고리 내의 숫자가 합산되었습니다.
마지막으로 실제 문제에서는 데이터가 매우 커서 메모리에 모두 저장할 수 없다는 점에 유의하는 것이 중요합니다. 이 경우 외부 정렬 알고리즘을 사용하여 데이터를 조각으로 정렬한 다음 분류 및 합산을 수행할 수 있습니다. 이 알고리즘에는 더 많은 Golang 내장 함수와 외부 라이브러리가 포함되며 이 기사의 범위를 벗어납니다.
간단히 말하면 분류 합산은 일반적인 문제이며 Golang에서 구현하기가 매우 쉽습니다. Golang의 구조체 및 맵 유형을 사용하면 속성에 따라 데이터 세트를 쉽게 분류하고 각 범주 내의 숫자를 합산할 수 있습니다.
위 내용은 Golang을 사용하여 분류 요약을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!