Though not extremely performant, the only readable solution is:
  // Split by separator and pick the first one.
  // This has all the characters till null, excluding null itself.
  retByteArray := bytes.Split(byteArray[:], []byte{0}) [0]
  // OR
  // If you want a true C-like string, including the null character
  retByteArray := bytes.SplitAfter(byteArray[:], []byte{0}) [0]
A full example to have a C-style byte array:
package main
import (
    "bytes"
    "fmt"
)
func main() {
    var byteArray = [6]byte{97,98,0,100,0,99}
    cStyleString := bytes.SplitAfter(byteArray[:], []byte{0}) [0]
    fmt.Println(cStyleString)
}
A full example to have a Go style string excluding the nulls:
package main
import (
    "bytes"
    "fmt"
)
func main() {
    var byteArray = [6]byte{97, 98, 0, 100, 0, 99}
    goStyleString := string(bytes.Split(byteArray[:], []byte{0}) [0])
    fmt.Println(goStyleString)
}
This allocates a slice of slice of bytes. So keep an eye on performance if it is used heavily or repeatedly.