> 백엔드 개발 > Golang > golang 어설션 구현

golang 어설션 구현

王林
풀어 주다: 2023-05-13 10:08:37
원래의
1228명이 탐색했습니다.

Golang은 강력한 동시성 및 시스템 프로그래밍 기능을 갖춘 언어입니다. 프로그래밍을 더 빠르고 쉽게 만들기 위해 설계된 컴파일된 언어입니다. Assertion은 Golang에서 중요한 개념입니다. 이를 통해 프로그래머는 코드를 작성하는 동안 변수나 인터페이스의 유형을 "어설션"할 수 있으므로 런타임에 올바른 유형을 확인할 수 있습니다.

1. 단언이란 무엇입니까?

Assertion은 코드가 실행될 때 변수나 인터페이스가 특정 유형에 속하는지 여부를 확인할 수 있는 유형 확인 방법입니다. 일반적으로 어설션은 컴파일 후 코드의 정확성을 확인하고 오류를 조기에 감지하고 해결하는 데 사용됩니다.

Golang에서는 "인터페이스{}" 키워드를 통해 어설션이 구현됩니다. 인터페이스{}는 모든 유형의 데이터를 수용할 수 있는 빈 인터페이스를 나타냅니다. 빈 인터페이스는 유형 변환을 사용하여 다른 구체적인 유형으로 변환될 수 있습니다.

예를 들어 다음 코드는 "interface{}" 키워드를 사용하여 어설션을 구현합니다.

var i interface{} = "Hello"
s := i.(string)
fmt.Println(s)
로그인 후 복사

이 예에서는 빈 인터페이스 "interface{}"를 사용하여 "Hello" 문자열을 저장합니다. 그런 다음 "i.(string)" 어설션을 사용하여 이를 문자열 유형으로 변환합니다. 마지막으로 "fmt.Println(s)"을 사용하여 "Hello" 문자열을 인쇄합니다.

2. Golang의 세 가지 주장 방법

Golang에는 세 가지 주장 방법이 있습니다. 즉, 유형 확인 문, 유형 주장 문, 유형 판단 문입니다.

  1. 유형 확인 문
value, isType := someVariable.(Type)
로그인 후 복사

그 중 "value"가 있습니다. "변환된 값을 저장할 수 있는 변수를 나타냅니다. "isType"은 Boolean 유형의 변수로, 변환이 성공하면 True로 설정됩니다.

예:

var i interface{} = 55
s, ok := i.(string)
if ok {
  fmt.Printf("%q
", s)
} else {
  fmt.Printf("unexpected type %T
", i)
} 
로그인 후 복사

이 예에서 변수 "i"는 빈 인터페이스이며 정수 유형 값 "55"를 저장합니다. "s, ok := i.(string)" 어설션을 사용하여 문자열 형식으로 변환하고 변환된 값을 "s" 변수에 저장합니다. 변환 결과를 "ok" 변수에 저장합니다. 그리고, "if ok"라는 조건문을 통해 변환 결과를 판단한다. 문자열 타입이면 "55"라는 문자열을 출력하고, 그렇지 않으면 "unexpected type"을 출력한다.

2. 유형 주장문

value := someVariable.(Type)
로그인 후 복사

유형 주장문은 유형 확인 문과 유사하지만 변환 성공 여부를 부울 값으로 반환하지 않습니다. 유형 변환이 실패하면 프로그램이 중단되고 패닉 오류가 반환됩니다.

예:

var i interface{} = 55
s := i.(string) // panic: interface conversion: interface is int, not string
로그인 후 복사

이 예에서 변수 "i"는 빈 인터페이스이며 정수 유형 값 "55"를 저장합니다. 이를 문자열 유형으로 변환하려고 하지만 유형 어설션에서 "인터페이스 변환: 인터페이스는 문자열이 아니라 int입니다."라는 패닉 오류가 발생합니다.

3. 유형 판단문

switch someVariable.(type) {
case Type1:
    // someVariable 为Type1类型
case Type2:
    // someVariable 为Type2类型
default:
    // someVariable 不是Type1或Type2类型
}
로그인 후 복사

유형 판단문은 유형 확인 문과 유사하지만 변환 성공 여부를 불리언 값으로 반환하지 않습니다. "switch someVariable.(type)"은 유형 판단문을 사용하여 변수의 유형을 결정하고 유형에 따라 다른 코드 블록을 실행할 수 있습니다.

예:

var i interface{} = 55
switch i.(type) {
case int:
  fmt.Println("i is an int")
case string:
  fmt.Println("i is a string")
default:
  fmt.Printf("Unexpected type %T", i)
}
로그인 후 복사

이 예에서 변수 "i"는 빈 인터페이스이며 Integer 유형 값을 저장합니다. "switch i.(type)"은 유형 판단문을 이용하여 "i" 변수의 유형을 판단하고 해당 코드 블록을 실행할 수 있습니다. "i"는 정수 유형이므로 코드는 "i is an int"를 인쇄합니다.

3. 결론

Golang에서는 어설션이 일반적으로 사용되는 기술입니다. 이를 통해 프로그래머는 런타임에 변수나 인터페이스의 유형을 확인하여 나중에 유형 오류로 인한 심각한 결과를 방지할 수 있습니다. 이 기사에서는 유형 검사 문, 유형 주장 문 및 유형 판단 문을 포함하여 Golang의 세 가지 주장 방법을 소개합니다. 각 어설션 방법에는 고유한 장점과 한계가 있으며 프로그래머는 실제 필요에 따라 적합한 방법을 선택할 수 있습니다.

위 내용은 golang 어설션 구현의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿