Documentation
¶
Index ¶
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Write ¶
Example ¶
package main import ( "fmt" "github.com/palantir/goastwriter" "github.com/palantir/goastwriter/astgen" "github.com/palantir/goastwriter/decl" "github.com/palantir/goastwriter/expression" "github.com/palantir/goastwriter/statement" ) func main() { out, _ := goastwriter.Write("testpkg", decl.NewImports(map[string]string{ "fmt": "", "go/format": "gofmt", }), &decl.Struct{ Name: "Foo", Comment: "Foo is a struct", StructType: expression.StructType{ Fields: []*expression.StructField{ { Name: "Bar", Type: expression.StringType, Comment: "Bar is a field", }, { Name: "baz", Type: expression.BoolType.Pointer(), Comment: "Baz is a field", }, }, }, }, &decl.Function{ Name: "Bar", FuncType: expression.FuncType{ Params: []*expression.FuncParam{ expression.NewFuncParam("input", expression.Type("Foo").Pointer()), }, ReturnTypes: []expression.Type{ expression.Type("Foo").Pointer(), expression.ErrorType, }, }, Body: []astgen.ASTStmt{ &statement.Expression{ Expr: expression.NewCallFunction("fmt", "Println"), }, &statement.Expression{ Expr: expression.NewCallFunction("gofmt", "Source", expression.Nil), }, &statement.Return{ Values: []astgen.ASTExpr{ expression.VariableVal("input"), expression.Nil, }, }, }, }, ) fmt.Println(string(out)) }
Output: package testpkg import ( "fmt" gofmt "go/format" ) // Foo is a struct type Foo struct { // Bar is a field Bar string // Baz is a field baz *bool } func Bar(input *Foo) (*Foo, error) { fmt.Println() gofmt.Source(nil) return input, nil }
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.