精华内容
下载资源
问答
  • 由于想一个结构体的部分成员赋值,但是有不知道具体名字,故将tag的json名字作为索引,按照json名字来一一赋值 1.通过tag反射//将结构体里的成员按照json名字来赋值 func SetStructFieldByJsonName(ptr ...

    由于想给一个结构体的部分成员赋值,但是有不知道具体名字,故将tag的json名字作为索引,按照json名字来一一赋值

    
    
    1.通过tag反射
    //
    将结构体里的成员按照json名字来赋值 func SetStructFieldByJsonName(ptr interface{}, fields map[string]interface{}) { logger.Debug("fields:", fields) v := reflect.ValueOf(ptr).Elem() // the struct variable for i := 0; i < v.NumField(); i++ { fieldInfo := v.Type().Field(i) // a reflect.StructField tag := fieldInfo.Tag // a reflect.StructTag name := tag.Get("json") if name == "" { name = strings.ToLower(fieldInfo.Name) } //去掉逗号后面内容 如 `json:"voucher_usage,omitempty"` name = strings.Split(name, ",")[0] logger.Debug("JSONnAME:", name) if value, ok := fields[name]; ok { logger.Debug("fieldInfo.Name:", fieldInfo.Name) //给结构体赋值 //保证赋值时数据类型一致 logger.Debug("类型1:", reflect.ValueOf(value).Type(), "类型2:", v.FieldByName(fieldInfo.Name).Type()) if reflect.ValueOf(value).Type() == v.FieldByName(fieldInfo.Name).Type() { v.FieldByName(fieldInfo.Name).Set(reflect.ValueOf(value)) } } } return }
    
    

     2.通过结构体字段名称进行反射

    // 通过反射,对user进行赋值
    type user struct{
        name string
        age int
        feature map[string]interface{}
    }
    
    
    func main() {
        var u interface{}
        u=new(user)
        value:=reflect.ValueOf(u)
        if value.Kind()==reflect.Ptr{
            elem:=value.Elem()
            name:=elem.FieldByName("name")
            if name.Kind()==reflect.String{
                *(*string)(unsafe.Pointer(name.Addr().Pointer())) = "fangwendong"
            }
    
            age:=elem.FieldByName("age")
            if age.Kind()==reflect.Int{
                *(*int)(unsafe.Pointer(age.Addr().Pointer())) =24
            }
    
            feature:=elem.FieldByName("feature")
            if feature.Kind()==reflect.Map{
                *(*map[string]interface{})(unsafe.Pointer(feature.Addr().Pointer())) =map[string]interface{}{
                    "爱好":"篮球",
                    "体重":60,
                    "视力":5.2,
                }
            }
    
        }
    
        fmt.Println(u)
    }

     

     

     

    转载于:https://www.cnblogs.com/fwdqxl/p/7789162.html

    展开全文
  • //给结构体s1初始化 void Fun(void *ptr) { char *s = (char *)malloc(10); s = "Hello World"; int *p = (int *)ptr; *p = 100; //value of a *(p+1) = 101; //value of b *(p+2) = s; //value of ...
  • PB 给结构体赋值 获取结构体的值 清空结构体的值
  • android ndk 给结构体赋值的方法

    千次阅读 2014-07-13 07:30:28
    1,java 代码 结构体定义 public class MediaInfo {  public int nWidth;  public int nHeight;  public String strStream;   } java jni接口定义 public native static int ...

    1,java 代码 结构体定义

    public class  MediaInfo
    {
        public int nWidth;
        public int nHeight;
        public String strStream;
        
    }


    java jni接口定义
    public native static int       GetMediaInfo(int handle, MediaInfo info); //?

    c++ ndk 实现代码
    JNIEXPORT jint JNICALL Java_src_jni_RtspConnect_GetMediaInfo
      (JNIEnv *e, jclass c, jint h, jobject o)
    {
        //获取Java中的实例类 
        jclass objectClass = (e)->FindClass("src/jni/MediaInfo"); 
     
        //获取类中每一个变量的定义 
        jfieldID strStream = (e)->GetFieldID(objectClass, "strStream", "Ljava/lang/String;"); 
        jfieldID nHeight = (e)->GetFieldID(objectClass, "nHeight", "I"); 
        jfieldID nWidth =  (e)->GetFieldID(objectClass, "nWidth", "I");
     
     
        //给每一个实例的变量付值 
        (e)->SetIntField(o, nHeight, 10); 
        (e)->SetIntField(o, nWidth, 100);
        (e)->SetObjectField(o, strStream, (e)->NewStringUTF("my stream"));  
        
        return 0; 
    }


    Java 调用
     MediaInfo info = new MediaInfo();
            RtspConnect.GetMediaInfo(0, info);
            Log.i("info", ""+info.nHeight);
            Log.i("info", ""+info.nWidth);
            Log.i("info", ""+info.strStream);
    展开全文
  • element1=Matrix3x3() element1.Xx = X.X element1.Xy = X.Y element1.Xz = X.Z element1.Yx = Y.X element1.Yy = Y.Y ... theUI.NXMessageBox.Show("Error", NXMessageBox.DialogType.Warning,X.X.ToString...
  • 转自:http://www.cnweblog.com/fly2700/archive/2012/03/21/320083.html 1,java 代码 结构体定义 1 public class MediaInfo 2 { 3 public int nWidth; 4 public int nHeight; 5 public String strS...

    转自:http://www.cnweblog.com/fly2700/archive/2012/03/21/320083.html

     

    1,java 代码 结构体定义

    1 public class  MediaInfo
    2 {
    3     public int nWidth;
    4     public int nHeight;
    5     public String strStream;
    6 }


    java jni接口定义

    public native static int       GetMediaInfo(int handle, MediaInfo info); //


    c++ ndk 实现代码

     1 JNIEXPORT jint JNICALL Java_src_jni_RtspConnect_GetMediaInfo
     2   (JNIEnv *e, jclass c, jint h, jobject o)
     3 {
     4     //获取Java中的实例类 
     5     jclass objectClass = (e)->FindClass("src/jni/MediaInfo"); 
     6  
     7     //获取类中每一个变量的定义 
     8     jfieldID strStream = (e)->GetFieldID(objectClass, "strStream", "Ljava/lang/String;"); 
     9     jfieldID nHeight = (e)->GetFieldID(objectClass, "nHeight", "I"); 
    10     jfieldID nWidth =  (e)->GetFieldID(objectClass, "nWidth", "I");
    11  
    12  
    13     //给每一个实例的变量付值 
    14     (e)->SetIntField(o, nHeight, 10); 
    15     (e)->SetIntField(o, nWidth, 100);
    16     (e)->SetObjectField(o, strStream, (e)->NewStringUTF("my stream"));  
    17     
    18     return 0; 
    19 }


    Java 调用

    1  MediaInfo info = new MediaInfo();
    2         RtspConnect.GetMediaInfo(0, info);
    3         Log.i("info", ""+info.nHeight);
    4         Log.i("info", ""+info.nWidth);
    5         Log.i("info", ""+info.strStream);

     

    转载于:https://www.cnblogs.com/darkknightzh/p/4062819.html

    展开全文
  • 这是第一张图片,我在结构体里定义了两个数组nume[30]和nume2[39],此时nume2[39]在union{}的上面, 编译器报错 [img=https://img-bbs.csdn.net/upload/201705/01/1493599890_523060.png][/img] 第二张图片:...
  • 我们知道,结构体使用之前必须的赋初值,例如: struct A { char *na; }*p; 对这个结构体而言,如不对char *na和*p赋初值 ,这个程序就通不过,*p是一个结构体指针,所以我们要找到它要指...

    我们知道,结构体使用之前必须的赋初值,例如:



    struct  A

    {

    char *na;


    }*p;



    对这个结构体而言,如不对char *na和*p赋初值   ,这个程序就通不过,*p是一个结构体指针,所以我们要找到它要指的地方就必须知道*na的地址,于是仅有na有初值才知道*p的指向,即他保存的地址。同理要找到p在哪里,就得对p赋初值。



    下面我们用malloc函数动态分配空间给结构体对象。并使用free函数清空。



    代码如下:

    #include <stdio.h>
    #include <string.h>
    #include <malloc.h>
    
    struct student
    {
    	char *name;
    	int score;
    }*pstu;
    
    
    int main()
    {
    	pstu = (struct student *)malloc(sizeof(struct student));//给pstu赋初值,找到指针所在位置
    	pstu->name = (char *)malloc(10*sizeof(char));//对name赋初值,让pstu能找到它
    	strcpy(pstu->name,"bit-tech");//用strcpy函数给name赋值
    	printf("%s",pstu->name);
    	free(pstu->name);//清空的先后顺序也很重要,若先清空pstu,那么name的位置则无法确定,就无法清空。
    	free(pstu);
    	return 0;
    }

    展开全文
  • 最近没少使用golang,也没经过系统的学习,直接就上去开发了,遇到不少坑也学到不少东西,本次记录下结构体赋值的问题。 二、案例 1.结构体结构及错误 type Test struct { Test1 int64 `gorm:"column:test1" ...
  • ios 自定义结构体赋值

    千次阅读 2015-12-24 15:52:20
    ios 自定义结构体赋值 模仿CGRectMake、CGPointMake等
  • 结构体描述的是的一块连续内存的内存布局,用等号来用一个结构体另一个结构体赋值,编译不会有任何问题,其效果显然也和人直觉认为的一样,拷贝对应内存。 通过反汇编看编译器的行为,效果跟memcpy一样,还省掉了...
  • C语言结构体赋值问题

    千次阅读 2016-08-12 10:08:54
    本身做Java比较多,直接在C中将一个结构体赋值给另一个结构体时,不太确定会发生什么事。下面写了一个小例子测试。 结论是: C结构体直接复制类似于深拷贝,改变被修改的结构体不会影响到原来的结构体。 代码: ...
  • 关于给结构体成员中的结构体数组赋值的问题c语言源码:Line26-27汇编指令:实质上是执行了从源内存拷贝值到寄存器再从寄存器到目的内存地址?疑问:为什么stu_t[0]的地址是0x3c,stu_t[1]的地址是0x34(小端)如果...
  • 关于给结构体成员中的结构体数组赋值的问题c语言源码:Line26-27汇编指令:实质上是执行了从源内存拷贝值到寄存器再从寄存器到目的内存地址?疑问:为什么stu_t[0]的地址是0x3c,stu_t[1]的地址是0x34(小端)如果...
  • 2:在运算过程中,一个结构体可以直接赋值给另外一个结构体。 3:结构体指针不能直接被赋值,包括结构体指针下面的结构体(也就是说结构体直接赋值过程中不能出现指针形式的变量)。 例如下面:
  • 一直想直接用结构体,把所有相关的函数都放进去(通过函数指针,然后把函数赋值给函数指针),这样对外使用的时候就一个结构体把相关的函数都集合到一起了,很像类一样,而且方便函数补全,只要结构体名称,点后面就...
  • char数组或者结构体赋值

    千次阅读 2016-04-19 14:28:41
    首先,定一个一个结构体 struct ControlWindowMsg{  unsigned char buf1;  unsigned char buf2;    unsigned char buf3;    unsigned char buf4;   };
  • 直接使用等号赋值即可:n2 = n1; struct node { long a; int b; char c; long array[3]; }; int main() { struct node n1; n1.a = 1; n1.b = 2; n1.c = 3; n1.array[0] = 10; n1.ar...
  • 读取bin文件,并且按结构体赋值打印 目标:读取一个bin文件,并且将bin文件中的数据,按字节对齐赋值给结构体,并且打印出结构体的内容 目前思路是简单的先将bin文件数据一次性读到一个数组中,再将...
  • 在项目调试过程中,碰到 一个这样的问题,c++结构体赋值问题。在c语言中,一个结构体变量是可以赋值另外一个结构体变量的。在c++情况有所变化,仅此记录一下. 此为一个概率事件。 //定义接收数据数据,对内发布的...
  • c结构体如下:typedef struct Student{char name[20];...在使用该结构体时,除了要注意对结构体的内存分配,也不能忘了结构体内的指针进行初始化并分配内存空间!!!使用代码如下:char *_name= js...
  • C 结构体赋值传回

    2013-12-31 14:35:05
    将结构的一个指针(或者引用)传递函数形参就行了。实例代码: #include struct A { int x ; int y ; char z; }; void func(A *p) // 接收指向结构体 A 的指针 { p->x = 1; p->y = 2; p->z...
  • (CPP开发者加星标,提升C/C++技能)来源:嵌入式ARMhttps://kangzubin.com/c-pointer-array在 C 语言中,结构体(struct)是一个或多个变量的集合,这些变量可能为不同的类型,为了处理的方便而将这些变量组织在一个...
  • 在主体里先这么new 发现没有结构体里的内容 [img=https://img-bbs.csdn.net/upload/201712/09/1512781470_958302.png][/img] 然后我这么new 也不能关联到然后赋值 [img=...
  • BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs CSize sizeScreen (GetSystemMetrics (SM_CXSCREEN), ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,251
精华内容 500
关键字:

给结构体赋值