godoc: update struct field anchor code

Now without regexps and allocations.

And also match comments like:

    // Foo, if non-nil, ...

The comma confused the old pattern.

Updates golang/go#16753

Change-Id: I9016ee7b5933ea343950a39989952804c74a598b
Reviewed-on: https://go-review.googlesource.com/33755
Run-TryBot: Brad Fitzpatrick <bradfitz@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Chris Broadfoot <cbro@golang.org>
diff --git a/godoc/godoc_test.go b/godoc/godoc_test.go
index ce57d99..51d41b3 100644
--- a/godoc/godoc_test.go
+++ b/godoc/godoc_test.go
@@ -130,10 +130,13 @@
 package foo
 
 type T struct {
-     NoDoc string
+	NoDoc string
 
-     // Doc has a comment.
-     Doc string
+	// Doc has a comment.
+	Doc string
+
+	// Opt, if non-nil, is an option.
+	Opt *int
 }
 `)
 	fset := token.NewFileSet()
@@ -147,12 +150,15 @@
 	}
 	got := p.node_htmlFunc(pi, genDecl, true)
 	want := `type T struct {
-<span id="T.NoDoc">NoDoc</span> <a href="/pkg/builtin/#string">string</a>
+<span id="T.NoDoc"></span>NoDoc <a href="/pkg/builtin/#string">string</a>
 
-<span class="comment"><span id="T.Doc">// Doc </span>has a comment.</span>
+<span id="T.Doc"></span><span class="comment">// Doc has a comment.</span>
 Doc <a href="/pkg/builtin/#string">string</a>
+
+<span id="T.Opt"></span><span class="comment">// Opt, if non-nil, is an option.</span>
+Opt *<a href="/pkg/builtin/#int">int</a>
 }`
 	if got != want {
-		t.Errorf(" got: %q\nwant: %q\n", got, want)
+		t.Errorf("got: %s\n\nwant: %s\n", got, want)
 	}
 }