2017-09-27 93 views
0

我試圖讓在Doc S和Comment S的struct S和struct field S,但我不能似乎能夠這樣做,他們就打開了空:golang評論和文檔字段做ast.Inspect時 - 爲什麼它們是空白的?

package main 

import (
    "fmt" 
    "go/ast" 
    "go/parser" 
    "go/token" 
) 

func main() { 
    src := `package test 

    // Hello 
    type A struct { 
     // Where 
     B int // Are you 
    } 
    ` 

    fset := token.NewFileSet() 
    f, err := parser.ParseFile(fset, "", src, 0) 
    if err != nil { 
     panic(err) 
    } 

    ast.Inspect(f, func(n ast.Node) bool { 
     switch t := n.(type) { 
     case *ast.TypeSpec: 
      fmt.Println(t.Doc.Text()) 
     case *ast.StructType: 
      for _, field := range t.Fields.List { 
       fmt.Println(field.Doc.Text()) 
       fmt.Println(field.Comment.Text()) 
      } 
     } 
     return true 
    }) 
} 

產生三種空行:https://play.golang.org/p/4Eh9gS-PUg

看到類似的問題Go parser not detecting Doc comments on struct type但試圖運行公認的例子時,它變成了全空 - 所以我想知道如果自該版本以來有什麼改變。

回答

2

爲了得到意見,你必須在參數傳遞的parser.ParseComments標誌parser.ParseFile():

parser.ParseFile(fset, "", src, parse.ParseComments) 

所有可能的模式標誌被記錄在這裏:

https://golang.org/pkg/go/parser/#Mode

+0

啊那是在哪裏看!現在我也意識到,「你好」的評論是在'ast.GenDecl'上,而不是'ast.TypeSpec' – salient

相關問題