백엔드 개발 Golang Golang에서 사용자 정의 유형의 값을 비교하는 방법은 무엇입니까?

Golang에서 사용자 정의 유형의 값을 비교하는 방법은 무엇입니까?

Jun 05, 2024 pm 01:04 PM
맞춤 유형 비교하다

Golang에서는 기본 표현이 동일한 유형에 대해 == 연산자를 직접 사용하여 사용자 정의 유형의 값을 비교할 수 있습니다. 더 복잡한 유형의 경우에는 Reflect.DeepEqual 함수를 사용하여 두 값의 전체 내용을 재귀적으로 비교합니다.

在 Golang 中,如何比较自定义类型的值?

Golang의 사용자 정의 유형 값 비교

Golang에서 사용자 정의 유형은 프로그램에서 필요에 따라 생성할 수 있는 사용자 정의 데이터 유형입니다. 사용자 정의 유형의 값으로 작업할 때 때로는 값이 같은지 비교하거나 같은지 확인해야 합니다. 이번 글에서는 Golang에서 커스텀 타입의 값을 비교하는 방법과 실제 사례를 소개하겠습니다.

== 연산자를 사용하세요. == 操作符

对于某些自定义类型,可以通过 == 操作符方便地比较它们的值。当两个类型具有相同的底层表示形式时,可以使用 == 操作符。例如,以下是如何比较两个 int 类型的值:

1

2

3

4

5

6

7

8

9

10

11

package main

 

import "fmt"

 

type MyInt int

 

func main() {

    var a MyInt = 10

    var b MyInt = 10

    fmt.Println(a == b) // true

}

로그인 후 복사

使用 reflect.DeepEqual 函数

对于更复杂的自定义类型,不能直接使用 == 操作符进行比较。在这种情况下,可以使用 reflect.DeepEqual 函数,该函数通过递归比较两个值的全部内容来确定它们是否相等。以下是如何使用 reflect.DeepEqual 函数比较两个 struct 类型的值:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

package main

 

import "fmt"

import "reflect"

 

type MyStruct struct {

    Name string

    Age  int

}

 

func main() {

    var a = MyStruct{Name: "Alice", Age: 25}

    var b = MyStruct{Name: "Alice", Age: 25}

    fmt.Println(reflect.DeepEqual(a, b)) // true

}

로그인 후 복사

实战案例:比较用户结构体

让我们考虑一个实战案例,其中需要比较用户结构体。假设我们有一个 User 结构体,其中包含 NameAgeEmail 字段。

1

2

3

4

5

type User struct {

    Name   string

    Age    int

    Email  string

}

로그인 후 복사

现在,假设我们收到两个包含不同值的用户结构体实例。我们需要确定它们是否代表同一个人。我们可以使用 reflect.DeepEqual 函数来比较这些结构体:

1

2

3

func areUsersEqual(u1, u2 User) bool {

    return reflect.DeepEqual(u1, u2)

}

로그인 후 복사

然后,我们可以使用 areUsersEqual

🎜일부 사용자 정의 유형의 경우 해당 값을 == 연산자를 통해 편리하게 비교할 수 있습니다. == 연산자는 두 유형이 동일한 기본 표현을 가질 때 사용할 수 있습니다. 예를 들어, int 유형의 두 값을 비교하는 방법은 다음과 같습니다. 🎜

1

2

3

4

5

6

7

8

9

func main() {

    u1 := User{Name: "John", Age: 30, Email: "john@example.com"}

    u2 := User{Name: "John", Age: 30, Email: "john@example.com"}

 

    if areUsersEqual(u1, u2) {

        fmt.Println("Users are equal.")

    } else {

        fmt.Println("Users are not equal.")

    }

로그인 후 복사
🎜🎜 reflect.DeepEqual 함수를 사용하세요. 🎜🎜🎜더 복잡한 사용자 정의 유형의 경우에는 사용할 수 없습니다. 비교를 위해 == 연산자를 직접 사용할 수 있습니다. 이 경우 전체 내용을 재귀적으로 비교하여 두 값이 동일한지 확인하는 reflect.DeepEqual 함수를 사용할 수 있습니다. reflect.DeepEqual 함수를 사용하여 두 struct 유형의 값을 비교하는 방법은 다음과 같습니다. 🎜rrreee🎜🎜실용적 예: 사용자 구조 비교🎜🎜🎜실용적인 것을 고려해 보겠습니다. 사용자 구조를 비교해야 하는 경우입니다. Name, AgeEmail 필드가 있는 User 구조가 있다고 가정합니다. 🎜rrreee🎜이제 서로 다른 값을 포함하는 두 개의 User 구조체 인스턴스를 받았다고 가정해 보겠습니다. 우리는 그들이 같은 사람을 대표하는지 판단해야 합니다. reflect.DeepEqual 함수를 사용하여 이러한 구조를 비교할 수 있습니다: 🎜rrreee🎜 그런 다음 areUsersEqual 함수를 사용하여 사용자가 동일한지 확인할 수 있습니다. 🎜rrreee

위 내용은 Golang에서 사용자 정의 유형의 값을 비교하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

Xiaomi Mi 14 Pro에서 NFC 기능을 활성화하는 방법은 무엇입니까? Xiaomi Mi 14 Pro에서 NFC 기능을 활성화하는 방법은 무엇입니까? Mar 19, 2024 pm 02:28 PM

Xiaomi Mi 14 Pro에서 NFC 기능을 활성화하는 방법은 무엇입니까?

Huawei Pocket2에서 원격으로 TikTok을 사용하는 방법은 무엇입니까? Huawei Pocket2에서 원격으로 TikTok을 사용하는 방법은 무엇입니까? Mar 18, 2024 pm 03:00 PM

Huawei Pocket2에서 원격으로 TikTok을 사용하는 방법은 무엇입니까?

문서를 더 깔끔하게 만들기 위해 WPS Word에서 줄 간격을 설정하는 방법 문서를 더 깔끔하게 만들기 위해 WPS Word에서 줄 간격을 설정하는 방법 Mar 20, 2024 pm 04:30 PM

문서를 더 깔끔하게 만들기 위해 WPS Word에서 줄 간격을 설정하는 방법

iPhone 16 Pro CAD 도면이 공개되어 두 번째 새 버튼이 추가되었습니다. iPhone 16 Pro CAD 도면이 공개되어 두 번째 새 버튼이 추가되었습니다. Mar 09, 2024 pm 09:07 PM

iPhone 16 Pro CAD 도면이 공개되어 두 번째 새 버튼이 추가되었습니다.

Xiaomi Mi 14 Ultra AI 스마트 이미지 확장을 사용하는 방법은 무엇입니까? Xiaomi Mi 14 Ultra AI 스마트 이미지 확장을 사용하는 방법은 무엇입니까? Mar 16, 2024 pm 12:37 PM

Xiaomi Mi 14 Ultra AI 스마트 이미지 확장을 사용하는 방법은 무엇입니까?

C언어와 PHP의 차이점과 비교분석 C언어와 PHP의 차이점과 비교분석 Mar 20, 2024 am 08:54 AM

C언어와 PHP의 차이점과 비교분석

TrendX 연구소: Merlin Chain 프로젝트 분석 및 생태 목록 TrendX 연구소: Merlin Chain 프로젝트 분석 및 생태 목록 Mar 24, 2024 am 09:01 AM

TrendX 연구소: Merlin Chain 프로젝트 분석 및 생태 목록

Oracle 버전 경쟁: 귀하의 요구 사항에 어떤 버전이 더 적합합니까? Oracle 버전 경쟁: 귀하의 요구 사항에 어떤 버전이 더 적합합니까? Mar 07, 2024 pm 01:21 PM

Oracle 버전 경쟁: 귀하의 요구 사항에 어떤 버전이 더 적합합니까?

See all articles