strconv: fix initialization of atofRandomTests

The init func was using testing.Short, but that's not available
until after flag parsing. Found by CL 49251.

Change-Id: Ia7b871043375260873fa2c7e81e1d43c1c83d33f
Reviewed-on: https://go-review.googlesource.com/49253
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
diff --git a/src/strconv/atof_test.go b/src/strconv/atof_test.go
index 0a89c3e..f6c6478 100644
--- a/src/strconv/atof_test.go
+++ b/src/strconv/atof_test.go
@@ -10,6 +10,7 @@
 	"reflect"
 	. "strconv"
 	"strings"
+	"sync"
 	"testing"
 	"time"
 )
@@ -213,12 +214,17 @@
 }
 
 var (
+	atofOnce               sync.Once
 	atofRandomTests        []atofSimpleTest
 	benchmarksRandomBits   [1024]string
 	benchmarksRandomNormal [1024]string
 )
 
-func init() {
+func initAtof() {
+	atofOnce.Do(initAtof1)
+}
+
+func initAtof1() {
 	// The atof routines return NumErrors wrapping
 	// the error and the string. Convert the table above.
 	for i := range atoftests {
@@ -261,6 +267,7 @@
 }
 
 func testAtof(t *testing.T, opt bool) {
+	initAtof()
 	oldopt := SetOptimize(opt)
 	for i := 0; i < len(atoftests); i++ {
 		test := &atoftests[i]
@@ -306,6 +313,7 @@
 func TestAtofSlow(t *testing.T) { testAtof(t, false) }
 
 func TestAtofRandom(t *testing.T) {
+	initAtof()
 	for _, test := range atofRandomTests {
 		x, _ := ParseFloat(test.s, 64)
 		switch {