func Strs(strs ...string) (cstrs **uint8, free func()) {
	if len(strs) == 0 {
		panic("Strs: expected at least 1 string")
	}

	var pinned []string
	var ptrs []*uint8
	for _, str := range strs {
		if !strings.HasSuffix(str, "\x00") {
			str += "\x00"
		}
		pinned = append(pinned, str)
		ptrs = append(ptrs, Str(str))
	}

	return &ptrs[0], func() {
		runtime.KeepAlive(pinned)
		pinned = nil
	}
}
func Strs(strs ...string) (cstrs **uint8, free func()) {
	if len(strs) == 0 {
		panic("Strs: expected at least 1 string")
	}

	var pinned []string
	var ptrs []*uint8
	for _, str := range strs {
		if !strings.HasSuffix(str, "\x00") {
			str += "\x00"
		}
		pinned = append(pinned, str)
		ptrs = append(ptrs, Str(str))
	}

	return &ptrs[0], func() {
		runtime.KeepAlive(pinned)
		pinned = nil
	}
}
func Strs ( strs ... string ) ( cstrs * * uint8 , free func ( ) ) { if len ( strs ) == 0 { panic ( " " ) } var pinned [ ] string var ptrs [ ] * uint8 for _ , str := range strs { if ! strings . HasSuffix ( str , " \x00 " ) { str += " \x00 " } pinned = append ( pinned , str ) ptrs = append ( ptrs , Str ( str ) ) } return & ptrs [ 0 ] , func ( ) { runtime . KeepAlive ( pinned ) pinned = nil } }
// Strs takes a list of Go strings (with or without null-termination) and
// returns their C counterpart.
//
// The returned free function must be called once you are done using the strings
// in order to free the memory.
//
// If no strings are provided as a parameter this function will panic.
Strs takes a list of Go strings ( with or without null - termination ) and returns their C counterpart . The returned free function must be called once you are done using the strings in order to free the memory . If no strings are provided as a parameter this function will panic .