]> Cypherpunks repositories - gostls13.git/commitdiff
strings.FIelds: slight simplification.
authorRob Pike <r@golang.org>
Mon, 29 Mar 2010 20:39:16 +0000 (13:39 -0700)
committerRob Pike <r@golang.org>
Mon, 29 Mar 2010 20:39:16 +0000 (13:39 -0700)
R=rsc
CC=golang-dev
https://golang.org/cl/833042

src/pkg/strings/strings.go

index 1ceaeefbd4dcc4b1ef96b5b07098b6ccd306af3d..24aac10e9e269e4aff0a89102e6220113d16b821 100644 (file)
@@ -161,6 +161,7 @@ func SplitAfter(s, sep string, n int) []string {
 // Fields splits the string s around each instance of one or more consecutive white space
 // characters, returning an array of substrings of s or an empty list if s contains only white space.
 func Fields(s string) []string {
+       // First count the fields.
        n := 0
        inField := false
        for _, rune := range s {
@@ -171,9 +172,10 @@ func Fields(s string) []string {
                }
        }
 
+       // Now create them.
        a := make([]string, n)
        na := 0
-       fieldStart := -1
+       fieldStart := -1 // Set to -1 when looking for start of field.
        for i, rune := range s {
                if unicode.IsSpace(rune) {
                        if fieldStart >= 0 {
@@ -185,11 +187,10 @@ func Fields(s string) []string {
                        fieldStart = i
                }
        }
-       if fieldStart != -1 {
+       if fieldStart != -1 { // Last field might end at EOF.
                a[na] = s[fieldStart:]
-               na++
        }
-       return a[0:na]
+       return a
 }
 
 // Join concatenates the elements of a to create a single string.   The separator string