func suitableZones(hostname string, zones map[string]*route53.HostedZone) []*route53.HostedZone {
	var matchingZones []*route53.HostedZone
	var publicZone *route53.HostedZone

	for _, z := range zones {
		if aws.StringValue(z.Name) == hostname || strings.HasSuffix(hostname, "."+aws.StringValue(z.Name)) {
			if z.Config == nil || !aws.BoolValue(z.Config.PrivateZone) {
				// Only select the best matching public zone
				if publicZone == nil || len(aws.StringValue(z.Name)) > len(aws.StringValue(publicZone.Name)) {
					publicZone = z
				}
			} else {
				// Include all private zones
				matchingZones = append(matchingZones, z)
			}
		}
	}

	if publicZone != nil {
		matchingZones = append(matchingZones, publicZone)
	}

	return matchingZones
}
func suitableZones(hostname string, zones map[string]*route53.HostedZone) []*route53.HostedZone {
	var matchingZones []*route53.HostedZone
	var publicZone *route53.HostedZone

	for _, z := range zones {
		if aws.StringValue(z.Name) == hostname || strings.HasSuffix(hostname, "."+aws.StringValue(z.Name)) {
			if z.Config == nil || !aws.BoolValue(z.Config.PrivateZone) {
				
				if publicZone == nil || len(aws.StringValue(z.Name)) > len(aws.StringValue(publicZone.Name)) {
					publicZone = z
				}
			} else {
				
				matchingZones = append(matchingZones, z)
			}
		}
	}

	if publicZone != nil {
		matchingZones = append(matchingZones, publicZone)
	}

	return matchingZones
}
func suitableZones ( hostname string , zones map [ string ] * route53 . HostedZone ) [ ] * route53 . HostedZone { var matchingZones [ ] * route53 . HostedZone var publicZone * route53 . HostedZone for _ , z := range zones { if aws . StringValue ( z . Name ) == hostname || strings . HasSuffix ( hostname , " " + aws . StringValue ( z . Name ) ) { if z . Config == nil || ! aws . BoolValue ( z . Config . PrivateZone ) { // Only select the best matching public zone if publicZone == nil || len ( aws . StringValue ( z . Name ) ) > len ( aws . StringValue ( publicZone . Name ) ) { publicZone = z } } else { // Include all private zones matchingZones = append ( matchingZones , z ) } } } if publicZone != nil { matchingZones = append ( matchingZones , publicZone ) } return matchingZones }
// suitableZones returns all suitable private zones and the most suitable public zone
//   for a given hostname and a set of zones.
suitableZones returns all suitable private zones and the most suitable public zone for a given hostname and a set of zones .