golang 개발 구조체 비교하는 방법은 두 가지가 있습니다지도로 변환

원본 링크 : https://www.jianshu.com/p/81c4304f6d1b

프레임 워크, 사용하는 동안, 우리는 구조체 구조의 더 유사 beego 직접적인 방법이 작동하지 발견 gorose 새로운 ORM 타사에 노출되었을 때 최근 이동 개발, 일부 API는 다음지도로 데이터베이스 관련 작업입니다 구조체 우리가지도로 변환 할 필요가 여기에 구조체를 매핑하는 두 가지 방법을 변환하는 나의 시도는 다음과 같습니다

MPORT (
     " 인코딩 / JSON " 
    " FMT " 
    " 반영 " 
    " 시간 " 
) 

Persion 형 구조체 { 
    아이디        INT의 
    이름      문자열 
    주소   문자열 
    이메일     문자열 
    학교    문자열 
    도시      문자열 
    회사   문자열 
    나이       INT의 
    섹스       문자열 
    Proviece 문자열 문자열 
    PostTo의    문자열을
    매입      문자열 
    호에       문자열 
} 

FUNC 주 () { 
    StructToMapViaJson () 
    // StructToMapViaReflect () 
} 

StructToMapViaJson FUNC () { 
    m : = 확인 (맵 [ 캐릭터 ] 인터페이스 {}) 
    t : = time.Now () 
    인 : = Persion { 
        ID :        98439 , 
        이름 :      " zhaondifnei " , 
        주소 :   " 大沙地" , 
        이메일 :     " [email protected] ", 
        학교 :    " 광저우 열 다섯 고등학교 " , 
        도시 :      " zhongguoguanzhou " , 
        회사 :   " sndifneinsifnienisn " , 
        나이 :       23 , 
        성별 :       " F " , 
        Proviece : " Jianxi " , 
        컴 :       " 광저우 람보르기니 " , 
        PostTo :    " 블루 고래 XXXXXXXX는 " , 
        사지 :      "shensinfienisnfieni " ,
        호 :       " zhonsndifneisnidnfie " , 
    } 
    J, _ : = json.Marshal (사람) 
    json.Unmarshal (j,m) 
    fmt.Println (m) 
    fmt.Println (. time.Now () 서브 (t)) 
}

A는 JSON 구조체 회전에 의해,지도 JSON으로 변환

StructToMapViaJson FUNC () { 
    m는 : 만들기를 = (맵 [ 문자열 ] 인터페이스 {}) 
    T : = Time.now () 
    담당자 : = persion { 
        ID :        98439 , 
        이름 :      " zhaondifnei " , 
        주소 :   " Dashadi " , 
        이메일 :     " [email protected] " , 
        학교 :    " 광저우 열 다섯 고등학교 " , 
        도시 :      " zhongguoguanzhou " ,
        회사 소개 :   " sndifneinsifnienisn " , 
        나이 :       23 , 
        성별 :       " F " , 
        Proviece : " Jianxi " , 
        컴 :       " 광저우 람보르기니 " , 
        PostTo :    " 푸른 고래 XXXXXXXX " , 
        사지 :      " shensinfienisnfieni " , 
        호 :       " zhonsndifneisnidnfie " , 
    } 
    J, _ : = json.Marshal (사람)
    json.Unmarshal (j,엠)
    fmt.Println (m) 
    fmt.Printf ( " 시간 : %의 D ' ., time.Now () 서브 (t)) 
}

둘째,지도의 형태로 반사에 의해 생성

StructToMapViaReflect FUNC () { 
    m는 : 만들기를 = (맵 [ 문자열 ] 인터페이스 {}) 
    T : = Time.now () 
    담당자 : = persion { 
        ID :        98439 , 
        이름 :      " zhaondifnei " , 
        주소 :   " Dashadi " , 
        이메일 :     " [email protected] " , 
        학교 :    " 광저우 열 다섯 고등학교 " , 
        도시 :      " zhongguoguanzhou " ,
        회사 소개 :  사람) .Elem ()" sndifneinsifnienisn " , 
        나이 :       23 , 
        성별 :       " F " , 
        Proviece : " jianxi " , 
        컴 :       " 广州兰博基尼" , 
        PostTo :    " 蓝鲸XXXXXXXX는 " , 
        사지 :      " shensinfienisnfieni " , 
        호 :       " zhonsndifneisnidnfie " , 
    } 
    ELEM를 : = reflect.ValueOf ( 
    relType : = elem.Type ()
     에 대한 I = 0 ; 난 relType.NumField을 () "; 난 ++ { 
        m [relType.Field (I) .NAME] = elem.Field (I) .Interface () 
    } 
    fmt.Println (m) 
    fmt.Printf ( " 시간 : %의 D " , time.Now () 서브 (. t)) 
}

 

추천

출처www.cnblogs.com/wangjq19920210/p/11600479.html