func UTF16SliceToStringSlice()

in sys/windows/syscall_windows.go [470:490]


func UTF16SliceToStringSlice(buffer []uint16) []string {
	// Split the uint16 slice at null-terminators.
	var startIdx int
	var stringsUTF16 [][]uint16
	for i, value := range buffer {
		if value == 0 {
			stringsUTF16 = append(stringsUTF16, buffer[startIdx:i])
			startIdx = i + 1
		}
	}

	// Convert the utf16 slices to strings.
	result := make([]string, 0, len(stringsUTF16))
	for _, stringUTF16 := range stringsUTF16 {
		if len(stringUTF16) > 0 {
			result = append(result, syscall.UTF16ToString(stringUTF16))
		}
	}

	return result
}