func compareValues()

in sources/cassandra/validations/validation/validation.go [463:514]


func compareValues(v1, v2 interface{}) bool {
	// Handle nil values
	if v1 == nil && v2 == nil {
		return true
	}
	if v1 == nil || v2 == nil {
		return false
	}

	// Compare different types of values
	switch val1 := v1.(type) {
	case []byte:
		if val2, ok := v2.([]byte); ok {
			if len(val1) != len(val2) {
				return false
			}
			for i := range val1 {
				if val1[i] != val2[i] {
					return false
				}
			}
			return true
		}
	case map[string]interface{}:
		if val2, ok := v2.(map[string]interface{}); ok {
			if len(val1) != len(val2) {
				return false
			}
			for k, v := range val1 {
				if !compareValues(v, val2[k]) {
					return false
				}
			}
			return true
		}
	case []interface{}:
		if val2, ok := v2.([]interface{}); ok {
			if len(val1) != len(val2) {
				return false
			}
			for i := range val1 {
				if !compareValues(val1[i], val2[i]) {
					return false
				}
			}
			return true
		}
	}

	// For other types, use simple equality
	return fmt.Sprintf("%v", v1) == fmt.Sprintf("%v", v2)
}