windows: optimize UTF16{,Ptr}FromString

Use strings.IndexByte in UTF16FromString instead of an open-coded loop.

Change-Id: Iac4374d9a58e40659147d35c9ab21bb89f5da629
Reviewed-on: https://go-review.googlesource.com/c/sys/+/393594
Trust: Tobias Klauser <tobias.klauser@gmail.com>
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/windows/syscall_windows.go b/windows/syscall_windows.go
index 98b7e4b..ce3075c 100644
--- a/windows/syscall_windows.go
+++ b/windows/syscall_windows.go
@@ -10,6 +10,7 @@
 	errorspkg "errors"
 	"fmt"
 	"runtime"
+	"strings"
 	"sync"
 	"syscall"
 	"time"
@@ -86,10 +87,8 @@
 // s, with a terminating NUL added. If s contains a NUL byte at any
 // location, it returns (nil, syscall.EINVAL).
 func UTF16FromString(s string) ([]uint16, error) {
-	for i := 0; i < len(s); i++ {
-		if s[i] == 0 {
-			return nil, syscall.EINVAL
-		}
+	if strings.IndexByte(s, 0) != -1 {
+		return nil, syscall.EINVAL
 	}
 	return utf16.Encode([]rune(s + "\x00")), nil
 }