github.com/iEvan-lhr/exciting-tool@v0.0.0-20230504054234-8e983f73cdd2/string_test.go (about) 1 package tools 2 3 import ( 4 "log" 5 "reflect" 6 "testing" 7 "unsafe" 8 ) 9 10 func TestName(t *testing.T) { 11 //u := &User{Id: 23132, Username: "foo", Password: "bar", Identity: "324213", QrCode: "982j32", DenKey: "ansssss", TalkingKey: "qwesad"} 12 //log.Println(Make(u)) 13 //var app []User 14 //for i := 0; i < 10000; i++ { 15 // app = append(app, *u) 16 //} 17 //Send(0, app) 18 //log.Println(reflect.ValueOf(time.Now()).Interface()) 19 //u1:=UserHead(u) 20 log.Println(marshalTable(User{})) 21 //log.Println(UserHead(u)) 22 //b := StructToBytes(u) 23 //u.Username = ":::::::" 24 //n1 := &User{} 25 //n1 = BytesToStruct(b) 26 //log.Println(n1) 27 } 28 29 func Send(i int, data []User) { 30 if i < 1000 { 31 Send(i+1, data) 32 } 33 } 34 35 type User struct { 36 Id int `json:"id" marshal:"auto_insert"` 37 Username string `json:"username"` 38 Password string `json:"password" marshal:"off"` 39 Identity string `json:"identity"` 40 QrCode string `json:"qr_code"` 41 DenKey string `json:"den_key"` 42 TalkingKey string `json:"talking_key"` 43 } 44 45 //func (u *User) String() string { 46 // return u.Username + ":" + u.Password 47 //} 48 49 func StructToBytes(model *User) []byte { 50 var x reflect.SliceHeader 51 x.Len = int(unsafe.Sizeof(model)) 52 x.Cap = x.Len 53 x.Data = uintptr(unsafe.Pointer(model)) 54 return *(*[]byte)(unsafe.Pointer(&x)) 55 } 56 57 func BytesToStruct(data []byte) *User { 58 return (*User)(unsafe.Pointer((*reflect.SliceHeader)(unsafe.Pointer(&data)).Data)) 59 }