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  }