Эффективный однострочный метод - это встроенный вызов функции.Например,
package main
import "fmt"
func cstring(s string) []byte {
b := make([]byte, len(s)+1)
copy(b, s)
return b
}
func main() {
s := "abc"
fmt.Printf("%q\n", s)
c := cstring(s) // inlining call to cstring
fmt.Printf("%q\n", c)
}
решения по оптимизации:
$ go tool compile -m cstring.go
cstring.go:5:6: can inline cstring
cstring.go:15:14: inlining call to cstring
cstring.go:6:11: make([]byte, len(s) + 1) escapes to heap
cstring.go:5:14: cstring s does not escape
cstring.go:13:13: s escapes to heap
cstring.go:15:14: make([]byte, len(s) + 1) escapes to heap
cstring.go:17:13: c escapes to heap
cstring.go:13:12: main ... argument does not escape
cstring.go:17:12: main ... argument does not escape
$
Вывод:
$ go run cstring.go
"abc"
"abc\x00"
$
Детская площадка: https://play.golang.org/p/7gi9gR7iWkS