func buildGbkLocationString(location Location) string {

	var locationString string

	if location.Complement {
		location.Complement = false
		locationString = "complement(" + buildGbkLocationString(location) + ")"

	} else if location.Join {
		locationString = "join("
		for _, sublocation := range location.SubLocations {
			locationString += buildGbkLocationString(sublocation) + ","
		}
		locationString = strings.TrimSuffix(locationString, ",") + ")"
	} else {

		locationString = strconv.Itoa(location.Start+1) + ".." + strconv.Itoa(location.End)
		if location.FivePrimePartial {
			locationString = "<" + locationString
		}

		if location.ThreePrimePartial {
			locationString += ">"
		}
	}
	return locationString
}
// buildGbkLocationString is a recursive function that takes a location object and creates a gbk location string for BuildGbk()
buildGbkLocationString is a recursive function that takes a location object and creates a gbk location string for BuildGbk()
// buildGbkLocationString is a recursive function that takes a location object and creates a gbk location string for BuildGbk ()
func buildGbkLocationString(location Location) string {
	var locationString string
	if location.Complement {
		location.Complement = false
		locationString = "complement(" + buildGbkLocationString(location) + ")"
	} else if location.Join {
		locationString = "join("
		for _, sublocation := range location.SubLocations {
			locationString += buildGbkLocationString(sublocation) + ","
		}
		locationString = strings.TrimSuffix(locationString, ",") + ")"
	} else {
		locationString = strconv.Itoa(location.Start+1) + ".." + strconv.Itoa(location.End)
		if location.FivePrimePartial {
			locationString = "<" + locationString
		}
		if location.ThreePrimePartial {
			locationString += ">"
		}
	}
	return locationString
}
func buildGbkLocationString ( location Location ) string { var locationString string if location . Complement { location . Complement = false locationString = " " + buildGbkLocationString ( location ) + " " } else if location . Join { locationString = " " for _ , sublocation := range location . SubLocations { locationString += buildGbkLocationString ( sublocation ) + " " } locationString = strings . TrimSuffix ( locationString , " " ) + " " } else { locationString = strconv . Itoa ( location . Start + 1 ) + " " + strconv . Itoa ( location . End ) if location . FivePrimePartial { locationString = " " + locationString } if location . ThreePrimePartial { locationString += " " } } return locationString }
buildGbkLocationString is a recursive function that takes a location object and creates a gbk location string for BuildGbk()
buildGbkLocationString is a recursive function that takes a location object and creates a gbk location string for BuildGbk ()