>백엔드 개발 >Golang >특정 조건이 충족되는 경우에만 GO 구조 생성

특정 조건이 충족되는 경우에만 GO 구조 생성

WBOY
WBOY앞으로
2024-02-08 21:05:491031검색

仅当满足特定条件时才创建 GO 结构

PHP 편집자 Zimo는 특정 조건에서 GO 구조를 생성하는 중요한 기능을 소개합니다. 이 기능을 사용하면 필요에 따라 GO 구조를 생성할지 여부를 결정할 수 있으므로 프로그램의 효율성과 성능이 향상됩니다. 이 기능을 합리적으로 사용하면 불필요한 GO 구조 생성을 방지하고, 메모리 사용량과 가비지 수집 부담을 줄이고, 프로그램 실행 효율성을 향상시킬 수 있습니다. 이 기사에서는 이 기능을 사용하는 방법을 자세히 설명하고 실제 적용 사례를 몇 가지 제시합니다.

질문 내용

My go 코드는 다음과 같습니다.

으아악

저는 C++ 배경 지식을 가지고 있습니다. 이것은 C++에서는 쉬울 것입니다. 이동 중에 동적 메모리 할당이 있나요? Go에서 어떻게 이를 달성할 수 있나요?

다른 유효한 go 코드에서 2를 다시 선언하고 있습니까?

으아악

아니면 여기에 일종의 런타임 다형성이 필요합니까?

업데이트:

이 작업을 시도했지만 예상대로 컴파일되지도 않았습니다.

https://go.dev/play/p/ioq81aexgjn

다시 업데이트

이것을 시도해 보았는데 효과가 있는 것 같습니다. 괜찮나요?

https://go.dev/play/p/r_ywzmkgrps


정답


코드에 두 가지 문제가 있습니다.

  1. 변수는 둘러싸는 범위에서 선언되므로 해당 범위 외부에서는 액세스할 수 없습니다(if/else절)
  2. 변수는 값으로 선언됩니다

변수 선언을 if 子句范围之外,以使它们可以被 if 문 뒤의 코드 액세스로 이동하여 첫 번째 문제를 해결하는 경우:

으아악

이제 두 변수가 모두 선언되었으며 두 변수 모두 새로 할당된 mystruct 进行初始化,无论到达 if 문에서 which 절을 사용합니다.

이 문제를 해결하려면 변수를 포인터로 변경하고 if 문의 해당 분기에 원하는 값을 할당하세요.

으아악

보너스 팁: 미래의 당신은 이것을 한 쌍의 명령문으로 리팩터링해 주셔서 감사할 것입니다. ab 또는 둘 다 필요한지 결정한 다음 The를 단순화하세요. 복합 ab 或两者,然后简化您的复合 if 语句作为两个单独语句,分别初始化 ab 문은 두 개의

별도

문으로 작동하여 각각 a 또는 b를 초기화합니다. 으아악 목적은 논리적 중복(건조한 원칙: a 和/或 b 是否需要的问题与初始化 ab반복하지 마세요

)과 관심사의 분리를 피하는 것입니다. 즉, 언제

가 필요한지에 대한 질문을 분리합니다. em> 필수입니다. condition 2

참고: 게시한 코드에서는 조건이 무엇인지 명확하지 않기 때문에 🎜 표현 방법을 더 구체적으로 설명하는 것은 불가능합니다. 🎜

위 내용은 특정 조건이 충족되는 경우에만 GO 구조 생성의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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