github.com/tencent/goom@v1.0.1/test/data.go (about) 1 // Package test 兼容性测试、跨包结构测试工具类 2 package test 3 4 import "fmt" 5 6 // GlobalVar 用于测试全局变量 mock 7 var GlobalVar = 1 8 9 // Foo foo 测试函数 10 // 11 //go:noinline 12 func Foo(i int) int { 13 // check 对 defer 的支持 14 defer func() { fmt.Printf("defer\n") }() 15 cgoFuncAny() 16 return i * 1 17 } 18 19 // foo foo 测试未导出函数 20 // 21 //go:noinline 22 func foo(i int) int { 23 // check 对 defer 的支持 24 defer func() { fmt.Printf("defer\n") }() 25 return i * 1 26 } 27 28 // Invokefoo foo 测试调用未导出函数 29 // 30 //go:noinline 31 func Invokefoo(i int) int { 32 return foo(i) 33 } 34 35 // fake 未导出结构体 36 type fake struct { 37 field1 string 38 field2 int 39 } 40 41 // NewUnexportedFake 构建未导出fake 42 // nolint 43 func NewUnexportedFake() *fake { 44 return &fake{ 45 field1: "field1", 46 field2: 2, 47 } 48 } 49 50 // Call 普通方法 51 // 52 //go:noinline 53 func (f *fake) Call(i int) int { 54 if i < -10000 { 55 dummy() 56 } 57 return i 58 } 59 60 // Call2 普通方法 61 // 62 //go:noinline 63 func (f *fake) Call2(i int) int { 64 if i < -10000 { 65 dummy() 66 } 67 return i 68 } 69 70 // call 未导出方法 71 // 72 //go:noinline 73 func (f *fake) call(i int) int { 74 if i < -10000 { 75 dummy() 76 } 77 return i 78 } 79 80 // Invokecall 测试调用未导出函数 81 // 82 //go:noinline 83 func (f *fake) Invokecall(i int) int { 84 return f.call(i) 85 } 86 87 func dummy() { 88 fmt.Println("never print, just from fill function length") 89 } 90 91 // S 测试返回复杂类型 92 type S struct { 93 Field1 string 94 Field2 int 95 } 96 97 // S1 测试返回同等结构(不同Type)的值 98 type S1 struct { 99 Field1 string 100 Field2 int 101 } 102 103 // Foo1 foo1 测试函数返回复杂类型 104 // 105 //go:noinline 106 func Foo1() *S { 107 return &S{ 108 Field1: "ok", 109 Field2: 2, 110 } 111 } 112 113 // GetS 测试返回多参返回值 114 // 115 //go:noinline 116 func GetS() ([]byte, error) { 117 return []byte("hello"), nil 118 }