mirror of
https://github.com/google/go-jsonnet.git
synced 2025-08-08 07:17:12 +02:00
Making it independent from the jsonnet package breaks the circular dependency during stdast generation.
72 lines
956 B
Markdown
72 lines
956 B
Markdown
# dump
|
|
|
|
Package dump can dump a Go data structure to Go source file, so that it can be statically embeded into other code.
|
|
|
|
# Project Status
|
|
* UnsafePointer is not supported yet
|
|
* Cycles in the object graph are not supported yet
|
|
|
|
# Implementation Notes
|
|
|
|
## Aliasing
|
|
|
|
Aliases to primitives and structs will be preserved in the objects described by the generated code.
|
|
|
|
### Primitive pointers
|
|
```go
|
|
var a = "hello world"
|
|
|
|
var Obj = &struct {
|
|
Foo *string
|
|
Bar *string
|
|
}{
|
|
Foo: &a,
|
|
Bar: &a,
|
|
}
|
|
|
|
dump.dump(Obj)
|
|
|
|
```
|
|
|
|
will output
|
|
```go
|
|
var p1Var = "hello world"
|
|
var p1 = &p1Var
|
|
var Obj = &struct { Foo *string; Bar *string }{
|
|
Foo: p1,
|
|
Bar: p1,
|
|
}
|
|
```
|
|
|
|
### Reused pointers
|
|
```go
|
|
type Zeo struct {
|
|
A *string
|
|
}
|
|
|
|
var z = Zeo {
|
|
A: "hello world",
|
|
}
|
|
|
|
var Obj = &struct {
|
|
Foo *Zeo
|
|
Bar *Zeo
|
|
}{
|
|
Foo: &z,
|
|
Bar: &z,
|
|
}
|
|
|
|
dump.dump(Obj)
|
|
```
|
|
|
|
will output
|
|
|
|
```go
|
|
var p1 = &Zeo{
|
|
A: "hello world",
|
|
}
|
|
var Obj = &struct { Foo *Zeo; Bar *Zeo }{
|
|
Foo: p1,
|
|
Bar: p1,
|
|
}
|
|
``` |