2013-02-22 6 views
11

गो Iter64 को छोड़कर, मैं जो बता सकता हूं उससे डिफ़ॉल्ट रूप से इटेटरेटर के लिए int का उपयोग करता हूं। मैं गो में लूप इटरेटर के प्रकार को बदलने का तरीका नहीं समझ सकता। क्या इसके लिए कथन के साथ इनलाइन करने का कोई तरीका है? जब मैं लूप में कुछ करने की कोशिश करता हूं, तो एक सामान्य प्रकार का int समस्याएं उत्पन्न करता है, जैसे कि मॉड ऑपरेशन (%)।जाओ: मैं लूप इटरेटर प्रकार के लिए कैसे बदल सकता हूं?

func main() {                                
    var val uint64 = 1234567890             
    for i:=1; i<val; i+=2 { 
     if val%i==0 { 
     }           
    }                   
} 

./q.go:7: invalid operation: i < val (mismatched types int and uint64) 
./q.go:8: invalid operation: val % i (mismatched types uint64 and int) 

उत्तर

21

आपका मतलब कुछ ऐसा है?

for i, val := uint64(1), uint64(1234567890); i<val; i+=2 { 
    // your modulus operation 
} 

http://play.golang.org/p/yAdiJu4pNC

+0

धन्यवाद! मैंने "कास्टिंग" के बारे में कुछ दस्तावेज़ खोजे और कुछ भी नहीं मिला। – mfisch

+1

जाने में इसे "प्रकार का दावा" कहा जाता है। – Daniel

+14

@ डैनियल: प्रकार का दावा 'v, ok: = foo। (Int64)' वाक्यविन्यास है। 'Uint64 (1) 'वाक्यविन्यास रूपांतरण कहा जाता है। –

संबंधित मुद्दे