This is the same old discussion about deciding on using a string buffer or using raw string concatenation to build strings.
A Dir is actually a map[string]string, and, the network format is a string with form
attr1=val1 attr2=val2 ....
The function Dir.String() builds the string from the map. The question is:
Do we use bytes.Buffer and Fprintf to append data to the string, asking at the end to Buffer.String the resulting string? Or do we use a native Go string and concatenate using "+="?
Using bytes.Buffer and Fprintf in Dir.String() yields:
BenchmarkDirString 500000 5163 ns/op
Using strings and +=
BenchmarkDirString 500000 5077 ns/op
Surprisingly (perhaps), it's both easier to write and faster to use the strings and forget
about using the bytes.Buffer. It's likely this will place more pressure in the GC, because it builds and discards intermediate strings, but, it's faster and easier.