>백엔드 개발 >Golang >Golang을 사용하여 분류 요약을 구현하는 방법

Golang을 사용하여 분류 요약을 구현하는 방법

PHPz
PHPz원래의
2023-04-24 10:54:42859검색

컴퓨터 프로그래밍에서 범주형 합산은 일반적인 문제입니다. 즉, 속성에 따라 숫자 집합을 분류하고 각 범주 내의 숫자를 합하는 것입니다. 이 문제는 통계, 데이터 마이닝, 데이터 분석 등과 같은 다양한 분야에 적용됩니다. 이번 글에서는 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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