type Accept … type acceptSlice … func (slice acceptSlice) Len() int { … } func (slice acceptSlice) Less(i, j int) bool { … } func (slice acceptSlice) Swap(i, j int) { … } func stringTrimSpaceCutset(r rune) bool { … } func nextSplitElement(s, sep string) (item string, remaining string) { … } // Parse an Accept Header string returning a sorted list // of clauses func ParseAccept(header string) acceptSlice { … } // Negotiate the most appropriate content_type given the accept header // and a list of alternatives. func Negotiate(header string, alternatives []string) (content_type string) { … }