Go 맵 병합


개요

Go 맵 병합
func MergeMaps(ms ...map[string]any) map[string]any {
	mergedMap := make(map[string]any)

	for _, m := range ms {
		for k, v := range m {
			mergedMap[k] = v
		}
	}

	return mergedMap
}
func MergeMapsSmart(ms ...map[string]any) map[string]any {
	mergedMap := make(map[string]any)

	for _, m := range ms {
		for k, v := range m {
			if existingValue, exists := mergedMap[k]; exists {
				// Convert both existing and current values to strings
				existingStr := fmt.Sprint(existingValue)
				currentStr := fmt.Sprint(v)

				// Compare lengths and choose the longer one
				if len(currentStr) >= len(existingStr) {
					mergedMap[k] = v
				}
			} else {
				// If it doesn't exist, simply add the key-value pair
				mergedMap[k] = v
			}
		}
	}

	return mergedMap
}