github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/gnovm/tests/files/zpersist_valids.gno (about) 1 // PKGPATH: gno.land/r/demo/tests_test 2 package tests_test 3 4 type myStruct struct { 5 A int 6 B string 7 } 8 9 var ( 10 // Native types 11 abigint bigint = 16 12 abool bool = true 13 abyte byte = 0x16 14 afloat32 float32 = 16.16 15 afloat64 float64 = 16.16 16 aint int = 16 17 aint8 int8 = 16 18 aint16 int16 = 16 19 aint32 int32 = 16 20 aint64 int64 = 16 21 arune rune = 'a' 22 astring string = "hello" 23 astringslice []string = []string{"A"} 24 astruct myStruct = myStruct{16, "A"} 25 auint uint = 16 26 auint8 uint8 = 16 27 auint16 uint16 = 16 28 auint32 uint32 = 16 29 auint64 uint64 = 16 30 ainterface interface{} = struct{ a float32 }{16.0} 31 afunc func() string = func() string { return "A" } 32 33 // TODO: 34 // amap map[string]string = map[string]string{"a": "1"} 35 // more slices 36 // slice/map containing unsupported types 37 38 // Not supported: 39 // error 40 ) 41 42 func init() { 43 printVars("preinit ") 44 mutateVars("B") 45 printVars("postinit") 46 } 47 48 func main() { 49 printVars("premain ") 50 mutateVars("C") 51 printVars("postmain") 52 } 53 54 func mutateVars(stringModifier string) { 55 abigint *= 2 56 abool = !abool 57 abyte *= 2 58 afloat32 *= 2 59 afloat64 *= 2 60 aint *= 2 61 aint8 *= 2 62 aint16 *= 2 63 aint32 *= 2 64 aint64 *= 2 65 arune = rune(stringModifier[0]) 66 astring += stringModifier 67 astringslice = append(astringslice, stringModifier) 68 auint *= 2 69 auint8 *= 2 70 auint16 *= 2 71 auint32 *= 2 72 auint64 *= 2 73 astruct.A *= 2 74 astruct.B = stringModifier 75 ainterface = struct{ a string }{stringModifier} 76 afunc = func() string { return stringModifier } 77 78 // TODO: 79 // amap["c"] = "3" 80 } 81 82 func printVars(phase string) { 83 println(phase, 84 // variables 85 abigint, 86 abool, 87 abyte, 88 afloat32, 89 afloat64, 90 aint, 91 aint8, 92 aint16, 93 aint32, 94 aint64, 95 arune, 96 astring, 97 astringslice, 98 astringslice[0], 99 astruct, 100 auint, 101 auint8, 102 auint16, 103 auint32, 104 auint64, 105 ainterface, 106 afunc(), 107 ) 108 } 109 110 // Output: 111 // preinit 16 true 22 16.16 16.16 16 16 16 16 16 97 hello slice[("A" string)] A (struct{(16 int),("A" string)} gno.land/r/demo/tests_test.myStruct) 16 16 16 16 16 struct{(16 float32)} A 112 // postinit 32 false 44 32.32 32.32 32 32 32 32 32 66 helloB slice[("A" string),("B" string)] A (struct{(32 int),("B" string)} gno.land/r/demo/tests_test.myStruct) 32 32 32 32 32 struct{("B" string)} B 113 // premain 32 false 44 32.32 32.32 32 32 32 32 32 66 helloB slice[("A" string),("B" string)] A (struct{(32 int),("B" string)} gno.land/r/demo/tests_test.myStruct) 32 32 32 32 32 struct{("B" string)} B 114 // postmain 64 true 88 64.64 64.64 64 64 64 64 64 67 helloBC slice[("A" string),("B" string),("C" string)] A (struct{(64 int),("C" string)} gno.land/r/demo/tests_test.myStruct) 64 64 64 64 64 struct{("C" string)} C