tinygo/testdata/init.go
Ayke van Laethem bb3d05169d
interp: add new compile-time package initialization interpreter
This interpreter currently complements the Go SSA level interpreter. It
may stay complementary or may be the only interpreter in the future.

This interpreter is experimental and not yet finished (there are known
bugs!) so it is disabled by default. It can be enabled by passing the
-initinterp flag.

The goal is to be able to run all initializations at compile time except
for the ones having side effects. This mostly works except perhaps for a
few edge cases.

In the future, this interpeter may be used to actually run regular Go
code, perhaps in a shell.
2018-11-04 18:40:51 +01:00

33 строки
490 Б
Go

package main
func init() {
println("init")
}
func main() {
println("main")
println("v1:", v1)
println("v2:", v2.x, v2.y)
println("v3:", len(v3), cap(v3), v3[0], v3[3])
println("v4:", len(v4), v4 == nil)
println("v5:", len(v5), v5 == nil)
println("v6:", v6)
println("v7:", cap(v7), string(v7))
}
type (
t2 struct {
x int
y int
}
)
var (
v1 = 3
v2 = t2{2, 5}
v3 = []int{2, 3, 5, 7}
v4 map[string]int
v5 = map[string]int{}
v6 = float64(v1) < 2.6
v7 = []byte("foo")
)