>  기사  >  백엔드 개발  >  알려진 유형을 스위치의 유형 매개변수에 대한 포인터로 변환하는 방법은 무엇입니까?

알려진 유형을 스위치의 유형 매개변수에 대한 포인터로 변환하는 방법은 무엇입니까?

王林
王林앞으로
2024-02-09 11:30:181014검색

알려진 유형을 스위치의 유형 매개변수에 대한 포인터로 변환하는 방법은 무엇입니까?

PHP 편집기 Banana는 알려진 유형을 스위치의 유형 매개변수를 가리키는 포인터로 변환하는 방법을 소개합니다. 프로그래밍에서는 프로그램에서 보다 유연한 작업을 수행하기 위해 알려진 유형의 변수를 포인터로 변환해야 하는 경우가 있습니다. 이 변환은 "&" 연산자를 사용하여 수행할 수 있습니다. 변수 이름 앞에 "&" 연산자를 붙여 변수에 대한 포인터로 변환합니다. 이런 방식으로 우리는 프로그램에서 변수를 할당하거나 읽는 대신 변수를 조작하기 위해 포인터를 사용할 수 있습니다. 다음에는 이러한 유형 변환을 수행하는 방법을 자세히 소개하고 여러분의 이해를 돕기 위해 샘플 코드를 제공하겠습니다.

질문 내용

반환 값의 type 매개변수를 기반으로 json 문자열의 바이트 배열을 다른 바이트 배열로 변환하는 함수를 작성하려고 합니다.

  • map[string]인터페이스{}: map[string]인터페이스로 변환됨{}
  • []byte: 변환하지 않고 그대로 반환
  • 구조체: 구조체로 변환

제 코드는 다음과 같습니다:

으아악

이 코드는 아래와 같이 jsonbytearray 유형을 t로 변환할 때 type 오류를 발생시킵니다.

으아악

[]byte 유형 변수의 포인터를 일반 유형 반환 값에 할당하는 방법은 무엇입니까?

해결책

t受到any的约束,所以不能直接转换。您必须断言 &jsonbytearray 实际上与该开关情况下的 *t동일한 유형으로 인해:

으아악

이렇게 하면 컴파일 오류가 사라지지만 특별히 좋은 디자인은 아닙니다. json.unmarshal 专门用于一种类型 (*[]byte)을 사용해야 하는 경우 일반 기능을 사용하는 대신 호출 사이트를 변경하는 것이 좋습니다.

귀하의 목표는 호출자가 비정렬화하는 대신 바이트 조각을 있는 그대로 얻을 수 있도록 하는 것이라고 가정합니다. 그런 다음 호출 사이트에서

로 함수를 호출할 수 있습니다. 으아악

즉, 이 시점에서 여러분은 이미 jsonbytearray 바이트 슬라이스라는 것을 알고 있습니다.

그러면 이 함수를 호출할 이유가 없습니다. 간단히 매개변수의 주소를 얻을 수 있습니다: data := &jsonbytearray ,并在其他地方使用 json.unmarshal .

위 내용은 알려진 유형을 스위치의 유형 매개변수에 대한 포인터로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제