gogen
所属分类:内容生成
开发工具:GO
文件大小:21KB
下载次数:0
上传日期:2017-03-07 00:34:53
上 传 者:
sh-1993
说明: 用于编程Go代码生成的库
(Library for programmatic Go code generation)
文件列表:
assign.go (276, 2017-03-07)
assign_test.go (1004, 2017-03-07)
binary_op.go (1302, 2017-03-07)
builtins.go (271, 2017-03-07)
cmd (0, 2017-03-07)
cmd\astdump (0, 2017-03-07)
cmd\astdump\main.go (1050, 2017-03-07)
cmd\genfunctree (0, 2017-03-07)
cmd\genfunctree\main.go (3139, 2017-03-07)
declaration.go (87, 2017-03-07)
declare.go (498, 2017-03-07)
declare_and_assign.go (296, 2017-03-07)
declare_and_assign_test.go (1075, 2017-03-07)
declare_test.go (1327, 2017-03-07)
dotted.go (240, 2017-03-07)
dotted_test.go (881, 2017-03-07)
examples (0, 2017-03-07)
examples\declare_function.go (656, 2017-03-07)
examples\for_loop.go (613, 2017-03-07)
examples\hello_world.go (343, 2017-03-07)
examples\run-example.sh (198, 2017-03-07)
expression.go (85, 2017-03-07)
fn (0, 2017-03-07)
fn\fns.go (96, 2017-03-07)
fn\map.go (1434, 2017-03-07)
fn\print.go (620, 2017-03-07)
for.go (631, 2017-03-07)
for_test.go (1026, 2017-03-07)
function.go (2214, 2017-03-07)
function_call.go (631, 2017-03-07)
function_call_test.go (775, 2017-03-07)
gogen_suite_test.go (188, 2017-03-07)
if.go (456, 2017-03-07)
import.go (423, 2017-03-07)
import_test.go (1014, 2017-03-07)
package.go (622, 2017-03-07)
package_test.go (454, 2017-03-07)
range.go (782, 2017-03-07)
... ...
# gogen
A simplification of Go's `go/ast` package that allows for some
interesting code generation. Currently very rough.
# Examples
## Hello World
```go
package main
import (
"os"
. "github.com/garslo/gogen"
)
func main() {
pkg := Package{Name: "main"}
pkg.Declare(Import{"fmt"})
pkg.Declare(Function{
Name: "main",
Body: []Statement{
CallFunction{
Func: Dotted{Var{"fmt"}, "Println"},
Params: []Expression{Var{`"Hello World!"`}},
},
},
})
pkg.WriteTo(os.Stdout)
}
```
Output:
```go
package main
import "fmt"
func main() {
fmt.Println("Hello World!")
}
```
## More
See the
[examples](https://github.com/garslo/gogen/tree/master/examples)
directory for more examples and a build/run script.
```sh
$ ./run-example.sh for_loop.go
CODE:
package main
import "os"
import "fmt"
func main() {
var i int
for i = 0; i <= 10; i++ {
fmt.Println(i)
}
os.Exit(i)
}
RUN RESULT:
0
1
2
3
4
5
6
7
8
9
10
exit status 11
```
近期下载者:
相关文件:
收藏者: