मैं इस तरह एक float64 के लिए एक पूर्णांक में बदल सकते हैं:जाओ प्रकार अभिकथन रूपांतरण
var a int = 10
var b float64 = float64(a)
के साथ दावे टाइप करने के लिए संबंध है
, प्रभावी जाओ राज्यों: 'प्रकार या तो ठोस प्रकार इंटरफ़ेस के पास होने चाहिए, या दूसरा इंटरफ़ेस प्रकार जो मान को परिवर्तित किया जा सकता है। '
इसे ध्यान में रखते, क्यों निम्नलिखित है असफल:
func foo(a interface{}) {
fmt.Println(a.(float64))
}
func main() {
var a int = 10
foo(a)
}
यह एक panic: interface conversion: interface is int, not float64
कारण बनता है।
ध्यान दें कि जाओ युक्ति का कहना है:
'इंटरफ़ेस प्रकार की एक्स एक अभिव्यक्ति है और एक प्रकार टी, प्राथमिक अभिव्यक्ति
x.(T)
के लिए दावा है कि एक्स शून्य नहीं है और कहा कि मूल्य में संग्रहीत एक्स प्रकार टी है।
जो प्रभावी गो स्टेटमेंट का विरोध करता है लेकिन जो कुछ मैं देखता हूं उसके अनुरूप अधिक लगता है।
सहमत हैं, हालांकि रन-टाइम पैनिक संदेश द्वारा सुझाए गए अनुसार, ऑपरेशन वास्तव में एक 'इंटरफ़ेस रूपांतरण' है, जैसा कि एक दावा के विपरीत है। यह अच्छा होगा अगर इस प्रकार का रूपांतरण स्वाभाविक रूप से हो सकता है। – Ferguzz
आप एक प्रकार का स्विच कर सकते हैं। आपके मन में और क्या प्राकृतिक है? –
@ फ़र्गज़: गो अपने सभी रूपांतरणों में बहुत स्पष्ट है, _no_ निहित या स्वचालित रूपांतरण हैं। यह एक बहुत ही अच्छी बात है। "प्राकृतिक रूपांतरण" के प्रकार स्पष्ट रूप से पूर्ण विपरीत हैं। – Volker