reflect
প্যাকেজ ব্যবহার করে স্ট্রাক্ট ফিল্ডগুলির সাথে কাজ করতে মোটামুটি সময় কাটাচ্ছে । ক্ষেত্রের মানটি কীভাবে সেট করবেন তা নির্দিষ্ট করে খুঁজে বের করতে পারেননি।
টাইপ টি স্ট্রাক্ট {ফাই ইন্ট; এফএস স্ট্রিং} var rt = t {123, "jblow"} var i64 int64 = 456
ক্ষেত্রের নাম পাওয়া i - এটি কাজ করে বলে মনে হচ্ছে
var field = reflect.TypeOf(r).Field(i).Name
ক্ষেত্রের মান হ'ল ক) ইন্টারফেস {}, খ) ইনট - এটি কার্যকর বলে মনে হচ্ছে
var iface interface{} = reflect.ValueOf(r).Field(i).Interface()
var i int = int(reflect.ValueOf(r).Field(i).Int())
ক্ষেত্রের মান নির্ধারণ i - আতঙ্কিত one
reflect.ValueOf(r).Field(i).SetInt( i64 )
প্যানিক : রিফ্লেক্ট.ভ্যালু une অপরিবর্তিত ক্ষেত্র ব্যবহার করে প্রাপ্ত মান ব্যবহার করে সেট করুন
ধরে নিলাম এটি ফিল্ডের নামগুলি "আইডি" এবং "নাম" পছন্দ করে না, সুতরাং "আইডি" এবং "নাম" নামকরণ করা হয়েছে
ক) এই ধারণাটি কি সঠিক?
খ) যদি সঠিক হয়, একই ফাইল / প্যাকেজ থেকে যেহেতু প্রয়োজন মনে করা যায় না
ক্ষেত্রের মান নির্ধারণ i - দুটি চেষ্টা করুন (ক্ষেত্রের নাম মূলধন সহ) - আতঙ্কিত
reflect.ValueOf(r).Field(i).SetInt( 465 )
reflect.ValueOf(r).Field(i).SetInt( i64 )
প্যানিক : রিফ্লেক্ট.ভ্যালু un অবসন্নযোগ্য মান ব্যবহার করে সেট করুন
@ পিটারএসও এর নীচে নির্দেশাবলী সম্পূর্ণ এবং উচ্চমানের are
চার। এইটা কাজ করে:
reflect.ValueOf(&r).Elem().Field(i).SetInt( i64 )
তিনি নথির পাশাপাশি ক্ষেত্রের নামগুলি রফতানিযোগ্য হতে হবে (মূল চিঠি দিয়ে শুরু করুন)
reflect
ডেটা সেট করার জন্য যে কারও কাছে আমি সবচেয়ে নিকটতম উদাহরণটি পেয়েছিলাম তা হ'ল মন্তব্য.gmane.org/gmane.comp.lang.go.general/35045 , কিন্তু সেখানেও তিনিjson.Unmarshal
আসল নোংরা কাজ করতেন