package main import ( "gocloud.dev/blob" // _ "gocloud.dev/blob/" _ "github.com/go-sql-driver/mysql" "context" "fmt" _ "gocloud.dev/blob/mysql" ) func main() { bucket, err := blob.OpenBucket(context.Background(), "") if err != nil { return fmt.Errorf("could not open bucket: %v", err) } defer bucket.Close() // bucket is a *blob.Bucket; see usage below // You can wrap a *blob.Bucket to always operate on a subfolder of the bucket using blob.PrefixedBucket: // import "gocloud.dev/blob" // Wrap the bucket using blob.PrefixedBucket. // The prefix should end with "/", so that the resulting bucket operates // in a subfolder. bucket = blob.PrefixedBucket(bucket, "a/subfolder/") // The original bucket is no longer usable; it has been closed. // The wrapped bucket should be closed when done. defer bucket.Close() // Bucket operations on will be translated to "a/subfolder/". // Alternatively, you can configure the prefix directly in the blob.OpenBucket URL: /* import ( "context" "gocloud.dev/blob" ) */ // Connect to a bucket using a URL, using the "prefix" query parameter to // target a subfolder in the bucket. // The prefix should end with "/", so that the resulting bucket operates // in a subfolder. b, err := blob.OpenBucket(ctx, "mem://?prefix=a/subfolder/") if err != nil { return err } defer b.Close() // Bucket operations on will be translated to "a/subfolder/". }