func (l Links) String() string {
	if l == nil {
		return fmt.Sprint(nil)
	}
	var strs []string
	for _, link := range l {
		strs = append(strs, link.String())
	}
	return strings.Join(strs, ", ")
}
String returns the string representation of multiple Links
for use in HTTP responses etc
package linkheader
import (
	"fmt"
	"strings"
)
type Link struct {
	URL    string
	Rel    string
	Params map[string]string
}
func (l Link) HasParam(key string) bool {
	for p := range l.Params {
		if p == key {
			return true
		}
	}
	return false
}
func (l Link) Param(key string) string {
	for k, v := range l.Params {
		if key == k {
			return v
		}
	}
	return ""
}
func (l Link) String() string {
	p := make([]string, 0, len(l.Params))
	for k, v := range l.Params {
		p = append(p, fmt.Sprintf("%s=\"%s\"", k, v))
	}
	if l.Rel != "" {
		p = append(p, fmt.Sprintf("%s=\"%s\"", "rel", l.Rel))
	}
	return fmt.Sprintf("<%s>; %s", l.URL, strings.Join(p, "; "))
}
type Links []Link
func (l Links) FilterByRel(r string) Links {
	links := make(Links, 0)
	for _, link := range l {
		if link.Rel == r {
			links = append(links, link)
		}
	}
	return links
}