code: func NewWorkspace(prefix string) (*Workspace, error) {
  	dir, err := ioutil.TempDir("", prefix)
  	if err != nil {
  		return nil, err
  	}
  	// create workspace layout
  	os.MkdirAll(filepath.Join(dir, "src"), 0755)
  	os.MkdirAll(filepath.Join(dir, "pkg"), 0755)
  	os.MkdirAll(filepath.Join(dir, "bin"), 0755)
  
  	// setup GOPATH
  	gopath := envOr("GOPATH", build.Default.GOPATH)
  	os.Setenv("GOPATH", fmt.Sprintf("%s%c%s", dir, os.PathListSeparator, gopath))
  
  	// we're done
  	return &Workspace{Path: dir, gopath: gopath}, nil
  }
docs: // NewWorkspace returns a newly created temporary Go workspace.
  // Use Delete to delete the corresponding temporary directory when done.