> 백엔드 개발 > Golang > 서로 다른 포인터 유형의 인수 3개를 사용하는 Sprintf(nil일 수 있음) 삼항 연산자를 사용할 수 없습니다. 수십 줄을 작성하지 않으려면 어떻게 해야 합니까?

서로 다른 포인터 유형의 인수 3개를 사용하는 Sprintf(nil일 수 있음) 삼항 연산자를 사용할 수 없습니다. 수십 줄을 작성하지 않으려면 어떻게 해야 합니까?

WBOY
풀어 주다: 2024-02-12 20:20:09
앞으로
1218명이 탐색했습니다.

具有 3 个不同指针类型的参数(可以为 nil)的 Sprintf。三元运算符不可用,如何避免写几十行?

PHP 편집자 Zimo가 Sprintf 기능에 대한 질문에 답변해 드립니다. 때때로 우리는 문자열의 형식을 지정하기 위해 Sprintf 함수를 사용해야 하지만 어떤 경우에는 세 가지 다른 포인터 유형의 매개 변수가 있는 상황에 직면할 수 있으며 이러한 매개 변수는 nil일 수 있습니다. 이 경우 삼항 연산자를 사용할 수 없습니다. 그렇지 않으면 코드가 장황해지고 읽기가 쉽지 않습니다. 그렇다면 수십 줄의 긴 코드 작성을 어떻게 피해야 할까요? 다음으로 간단한 해결방법을 알려드리겠습니다.

질문 내용

이 문자열을 sprintf

을 사용하여 만들고 싶습니다. 으아아아

엔티티에서 변수는 포인터이며 nil:

  • name*string
  • levelcode 具有 *levelcode종류
  • categorycode 具有 *categorycode종류

하지만 값이 있으면 포인터가 아닌 값을 원합니다. (예: unit abc는 레벨 0이지만 스냅인 카테고리에 속합니다 )

어떤 언어를 사용하든 다음과 같이 쓸 것입니다.

으아아아

하지만 go에서는 삼항 연산자를 허용하지 않습니다. nil 값을 처리하지 않으면 sprintf 예외가 발생합니다.

그럼 이렇게 시작해야 하나요?

message := fmt.sprintf("unit %s has a level of %v, but is of category %v",
    *entity.name, *entity.levelcode, *entity.categorycode)
로그인 후 복사

Solution

감사합니다. 여러분의 도움으로 함수를 성공적으로 구축했습니다.

으아아아

이렇게 불렀어요

으아아아

싱글 하나에 5개의 문장을 작성하는 sprintf...하지만 효과가 있습니다.

위 내용은 서로 다른 포인터 유형의 인수 3개를 사용하는 Sprintf(nil일 수 있음) 삼항 연산자를 사용할 수 없습니다. 수십 줄을 작성하지 않으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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