func (b Bucket) Object(name string) Object {
	return Object{Bucket: b, Name: name}
}
Object returns a reference for an object inside the bucket.
package gcsref
import (
	"fmt"
	"net/url"
	"strings"
)
func MustParse(uri string) Object {
	o, err := Parse(uri)
	if err != nil {
		panic(err)
	}
	return o
}
func Parse(uri string) (Object, error) {
	const prefix = "gs://"
	if !strings.HasPrefix(uri, prefix) {
		return Object{}, fmt.Errorf("parse GCS URI %q: scheme is not %q", uri, prefix)
	}
	uri = uri[len(prefix):]
	i := strings.IndexByte(uri, '/')
	if i == -1 {
		return Object{}, fmt.Errorf("parse GCS URI %q: no object name", uri)
	}
	bucket, name := Bucket(uri[:i]), uri[i+1:]
	if !bucket.IsValid() {
		return Object{}, fmt.Errorf("parse GCS URI %q: invalid bucket %q", uri, string(bucket))
	}
	obj := bucket.Object(name)
	if !obj.IsValid() {
		return Object{}, fmt.Errorf("parse GCS URI %q: invalid object %q", uri, name)
	}
	return obj, nil
}
type Bucket string
func (b Bucket) String() string {
	return string(b)
}