GO 언어로 중첩 구조물의 효율적인 비교 및 수정
GO에서 두 가지 복잡한 구조를 비교하고 세 번째 구조를 수정하려면 종종 중첩 구조를 처리해야하므로 반사를 직접 복잡하고 오류가 발생하기 쉽습니다. 이 기사는 타사 라이브러리 github.com/r3labs/diff
사용 하여이 프로세스를 단순화하는보다 간결하고 효율적인 방법을 소개합니다.
문제 설명 : 두 개의 중첩 구조를 비교해야하며 차이는 세 번째 구조에 적용됩니다.
샘플 구조 :
유형 사용자 struct { 이름 문자열 나이 int64 취미 취미 섹스 끈 } 입력 취미 구조물 { 자동차 자동차 게임 게임 } Type Car Struct { 브랜드 문자열 색상 문자열 가격 문자열 } 유형 게임 구조 { 번호 INT64 스타일 스트링 }
R3LABS/DIFF 라이브러리를 사용한 솔루션 :
이 라이브러리는 구조를 비교하고 차이를 적용하기위한 깨끗한 API를 제공합니다. 다음 코드는 라이브러리 사용 방법을 보여줍니다.
패키지 메인 수입 (수입) "FMT" "github.com/r3labs/diff" )) func main () { user1 : = user { 이름 : "Zhang San", 나이 : 15, 취미 : 취미 { 자동차 : 자동차 { 브랜드 : "벤츠", 색상 : "흰색", 가격 : "백만", }, 게임 : 게임 { 번호 : 10000, 스타일 : "아케이드", }, }, 섹스 : "남성", } user2 : = user { 이름 : "Zhang San", 나이 : 15, 취미 : 취미 { 자동차 : 자동차 { 브랜드 : "BMW", 색상 : "흰색", 가격 : "백만", }, 게임 : 게임 { 번호 : 10000, 스타일 : "아케이드", }, }, 섹스 : "남성", } user3 : = user { 이름 : "Zhang San", 나이 : 15, 취미 : 취미 { 자동차 : 자동차 { 브랜드 : "벤츠", 색상 : "흰색", 가격 : "백만", }, 게임 : 게임 { 번호 : 10000, 스타일 : "아케이드", }, }, 섹스 : "남성", } changes, err : = diff (user1, user2) err! = nil {인 경우 fmt.println ( "오류 :", err) 반품 } _, 변경 : = 범위 변경 { diff.Apply (Change, & user3) } fmt.printf ( "% v \ n", user3) }
이 코드는 먼저 세 가지 User
구조 인스턴스 인 user1
, user2
, user3
정의합니다. 그런 다음 diff.Diff(user1, user2)
사용하여 user1
및 user2
비교하여 차이 목록을 반환합니다. 마지막으로 diff.Apply(change, &user3)
사용하여 이러한 차이를 user3
에 적용합니다. 출력 user3
user1
과 user2
의 차이를 반영합니다. 반사를 수동으로 사용하는 것보다 더 간단하고 유지 관리 및 이해하기 쉽습니다. github.com/r3labs/diff
라이브러리를 설치 go get github.com/r3labs/diff
합니다
r3labs/diff
라이브러리를 사용함으로써 복잡한 반사 작업을 피하여 중첩 구조의 비교 및 수정을보다 명확하고 효율적으로 처리 할 수 있습니다.
위 내용은 Go Language의 반사 및 타사 라이브러리를 사용하여 두 구조를 비교하고 세 번째 구조의 값을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

GitHub是一个面向开源及私有软件项目的托管平台,可以让开发者们在这里托管自己的代码,并进行版本控制。GitHub主打的是开源项目与协作,通过这个平台上的开源项目,开发者们可以查看其他开发者的项目源代码,并进行交流和学习。

在git中,“push -u”的意思是将本地的分支版本上传到远程合并,并且记录push到远程分支的默认值;当添加“-u”参数时,表示下次继续push的这个远端分支的时候推送命令就可以简写成“git push”。

GitLab是一种基于Web的Git版本控制库管理软件,旨在帮助开发团队更好地协同工作,提高工作效率。当您第一次登录GitLab时,系统会提示您要更改初始密码以确保账户安全。本文将为大家介绍如何在GitLab上进行第一次登录并更改密码。

在git中,pack文件可以有效的使用磁盘缓存,并且为常用命令读取最近引用的对象提供访问模式;git会将多个指定的对象打包成一个成为包文件(packfile)的二进制文件,用于节省空间和提高效率。

git中pull失败的解决方法:1、利用“git reset --hard”强制覆盖掉自己的本地修改;2、利用“git stash”推送一个新的储藏,拉取之后利用“git stash pop”将修改保存到暂存区;3、若依然出现问题,则将文件保存到暂存区并提交注释即可。

git分支能改名字。改名方法:1、利用git中的branch命令修改本地分支的名称,语法为“git branch -m 旧名字 新名字”;2、利用“git push origin 新名字”命令,在删除远程分支之后将改名后的本地分支推送到远程;3、利用IDEA直接操作修改分支名称即可。

本篇文章给大家带来了关于git的相关知识,其中主要跟大家聊一聊怎么让你的git记录保持整洁,感兴趣的朋友下面一起来看一下吧,希望对大家有帮助。

git删除某个分支的方法:1、利用“git branch --delete dev”命令删除本地分支;2、利用“git push origin --delete branch”命令删除远程分支;3、利用“git branch --delete --remotes”命令删除追踪分支。


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

MinGW - Windows용 미니멀리스트 GNU
이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경
