go는 복소수에 대해 두 개의 숫자 유형, complex64
및 complex128
을 정의합니다. 이것은 드물다. 대부분의 프로그래밍 언어는 목적을위한 특정 프리미티브를 포함하기보다는 실제 숫자와 복잡한 숫자의 조합으로 복소수를 정의합니다. (그룹 이론에서도 복소수는 형식적으로 실수 쌍으로 구성됩니다.) 이동 디자이너는 왜 복소수에 원시 유형이 필요하다고 Go의 설계자가 결정 했습니까?왜 복소수가 이동의 원시 숫자 유형입니까?
답변
유용하기 때문에 유용합니까? 그리고 : 복소수 숫자는 바로 그것입니다 : 실수와 허수입니다.
다른 많은 언어 에서처럼 터플로 정의되지 않고 수학 라이브러리로 래핑되지 않고 원시 데이터 형식으로 정의 된 이유는 설명하지 않습니다. –
복소수에 대해 math/big/Rat 구문을 원하십니까? 아마도 그렇지 않습니다. 연산자 오버로딩이 없으므로'x'와'y'가 기본 유형이 아니면 Go에서'x + y'를 할 수 없습니다. – Volker
좋은 지적. 복잡한 프리미티브가 언어에 포함되기 전에이 토론을 발견했습니다. https://groups.google.com/forum/#!msg/golang-nuts/7bW5JmUbAB8/-UF5ZV8qGZYJ. 연산자 오버로딩의 부족은 실제로 비 고유 복소수를 사용하여 깨끗한 코드를 작성하는 데 문제가 된 것처럼 보입니다. 따라서 복소수가 기본 요소로 추가 된 것처럼 보입니다 - 작은 디자인 변경으로 많은 이점이있었습니다. 연산자 오버로딩을 추가하면 문제도 해결되지만 언어에 복잡성이 추가됩니다. 당신이 당신의 대답 몸에있는 과부하 문제를 언급한다면 나는 그것을 받아 들일 것입니다. –
Go의 저자 중 한 명인 Ken Thompson은 Go에서 복잡한 숫자를 원했기 때문에 Go 언어 사양에 추가하고 Go gc 컴파일러의 복소수를 구현했습니다.
그는 이전에 링크 된 ("https://groups.google.com/d/msg/golang-nuts/7bW5JmUbAB8/rJLvwYzqRmEJ) 토론에 댓글을 달았습니다."나는 이것에 관심이 있고 뭔가를 할 수 있기를 바랍니다. "라고 말했습니다. 그가 한 것처럼 보입니다. –
그가 거기에서 멈추게 된 것은 유감입니다. 복잡한 숫자는 유용하지만 라이브러리에서 쉽게 수행 할 수 있습니다. 합리적인 숫자도 유용하며 * 라이브러리에서만 사용할 수 있습니다 *. 합리적인 숫자를 사용하는 데 관련된 코드는 솔직하게 끔찍한 것처럼 보이지만 복소수에는 훌륭한 연산자가 있다는 점에서 불쾌한 불균형이 있습니다. 연산자 오버로딩 (최소한 4 개 주 + - * /)은 구워진 복합 번호 지원 IMO보다 훨씬 더 유용했을 것입니다. 이는 산술 연산자를 사용하기 위해 모든 라이브러리가 충족시켜야하는 특수 인터페이스를 통해 수행 될 수 있습니다. –
동의합니다. 합리적인 수는 그룹 이론의 복소수와 매우 비슷하게 숫자 쌍의 등가 클래스로 구성됩니다. 하나를 업그레이드하고 다른 하나는 업그레이드하지 않는 것이 좋습니다. –
- 1. 왜 약한 다형성 유형입니까?
- 2. 왜 SDL_Window가 불완전한 유형입니까?
- 3. Ocaml : 왜 이러한 유형입니까?
- 4. Excel에서 복소수에 스칼라 수량 (복소수가 아닌 숫자)을 곱하려면 어떻게합니까?
- 5. Java : 순환 복소수가 작동하지 않습니다.
- 6. 왜 discard의 매개 변수는 unsigned long long 유형입니까?
- 7. 이동의 UITextField에서 UITextView
- 8. 레일 이동의 조건부 제한
- 9. 파일 포인터 이동의 getline
- 10. 이동의 AppWidgetProvider가 활성화 위젯
- 11. 커서 이동의 환영
- 12. 이동의 문자열은 무엇입니까?
- 13. 어떤 필드 유형입니까?
- 14. 자바 스크립트 문자열은 기본 유형입니까?
- 15. 특별한 상황에서 복소수가 손실됩니다 (int 변환도 없음)
- 16. PHP 문자열은 값 유형입니까?
- 17. 개체는 실제로 참조 유형입니까?
- 18. 문자열을 확장 변환하는 기본 유형입니까?
- 19. 왜 const char_type *이 아닌 basic_streambuf char_type *의 "gptr"유형입니까?
- 20. 왜/설정 가져 오기 때 ManagedPipelineMode가 다른 유형입니까?
- 21. pcap_next_ex의 세 번째 매개 변수가 왜 incopatable 포인터 유형입니까?
- 22. 어떤 종류의 데이터 유형입니까?
- 23. selectedIndexes가 배열 유형입니까?
- 24. 출력은 어떤 데이터 유형입니까?
- 25. 어떤 차트 유형입니까?
- 26. 어떤 암호화 유형입니까?
- 27. 'this'키워드는 실제로 어떤 유형입니까?
- 28. ABAddressBookRef는 속성에 적합한 유형입니까?
- 29. 어떤 날짜 유형입니까?
- 30. HashMap 버킷은 어떤 유형입니까
C에는 내장 숫자가 있습니다. C99은 그것들을 추가했지만 C11은 그것들을 선택적으로 만들었습니다. –