func (e *GoogleSearch) InTitle(value string) *GoogleSearch {
	e.tags = append(e.tags, e.join(intitleTag, value, true))
	return e
}
InTitle searches for occurrences of keywords in title all or one.
package googlesearch
import (
	"net/url"
	"strings"
)
const (
	searchURL    = "https://www.google.com/search"
	siteTag      = "site:"
	urlTag       = "inurl:"
	filetypeTag  = "filetype:"
	cacheTag     = "cache:"
	relatedTag   = "related:"
	extTag       = "ext:"
	excludeTag   = "-"
	intitleTag   = "intitle:"
	intextTag    = "intext:"
	operatorOr   = "|"
	operatorAnd  = "+"
	bookTag      = "book:"
	ipTag        = "ip:"
	mapsTag      = "maps:"
	allintextTag = "allintext:"
	infoTag      = "info:"
	inanchorTag  = "inanchor:"
)
type GoogleSearch struct {
	tags []string
}
func New() *GoogleSearch {
	return &GoogleSearch{}
}
func (e *GoogleSearch) join(tag string, value string, quotes bool) string {
	if quotes {
		return tag + "\"" + value + "\""
	}
	return tag + value
}
func (e *GoogleSearch) String() string {
	return strings.Join(e.tags, " ")
}
func (e *GoogleSearch) QueryValues() url.Values {
	tags := strings.Join(e.tags, " ")
	params := url.Values{}
	params.Add("q", tags)
	return params
}
func (e *GoogleSearch) URL() string {
	baseURL, _ := url.Parse(searchURL)
	baseURL.RawQuery = e.QueryValues().Encode()
	return baseURL.String()
}
func (e *GoogleSearch) Site(site string) *GoogleSearch {
	e.tags = append(e.tags, e.join(siteTag, site, false))
	return e
}
func (e *GoogleSearch) Or() *GoogleSearch {
	e.tags = append(e.tags, operatorOr)
	return e
}
func (e *GoogleSearch) And() *GoogleSearch {
	e.tags = append(e.tags, operatorAnd)
	return e
}
func (e *GoogleSearch) InText(text string) *GoogleSearch {
	e.tags = append(e.tags, e.join(intextTag, text, true))
	return e
}
func (e *GoogleSearch) InURL(url string) *GoogleSearch {
	e.tags = append(e.tags, e.join(urlTag, url, true))
	return e
}
func (e *GoogleSearch) FileType(filetype string) *GoogleSearch {
	e.tags = append(e.tags, e.join(filetypeTag, filetype, true))
	return e
}
func (e *GoogleSearch) Cache(url string) *GoogleSearch {
	e.tags = append(e.tags, e.join(cacheTag, url, true))
	return e
}
func (e *GoogleSearch) Related(url string) *GoogleSearch {
	e.tags = append(e.tags, e.join(relatedTag, url, true))
	return e
}
func (e *GoogleSearch) Ext(ext string) *GoogleSearch {
	e.tags = append(e.tags, e.join(extTag, ext, false))
	return e
}
func (e *GoogleSearch) Exclude(tags *GoogleSearch) *GoogleSearch {
	e.tags = append(e.tags, e.join(excludeTag, tags.String(), false))
	return e
}
func (e *GoogleSearch) Group(tags *GoogleSearch) *GoogleSearch {
	e.tags = append(e.tags, "("+tags.String()+")")
	return e
}