원본 링크 : 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)) }