মাল্টি-ভ্যালু রিটার্ন ফাংশনের ক্ষেত্রে ফাংশনটি কল করার সময় আপনি ফলাফলের নির্দিষ্ট মানের ক্ষেত্রগুলি বা পদ্ধতিগুলি উল্লেখ করতে পারবেন না।
এবং যদি তাদের মধ্যে একটি হয় তবে error
এটি কোনও কারণের জন্য রয়েছে (যা ফাংশনটি ব্যর্থ হতে পারে) এবং আপনাকে এড়াতে হবে না কারণ যদি আপনি এটি করেন তবে আপনার পরবর্তী কোডটিও খারাপভাবে ব্যর্থ হতে পারে (যেমন রানটাইম আতঙ্কের ফলে) resulting
তবে এমন পরিস্থিতিতে থাকতে পারে যেখানে আপনি জানেন যে কোড কোনও পরিস্থিতিতে ব্যর্থ হবে না। এই ক্ষেত্রে আপনি একটি সহায়ক ফাংশন সরবরাহ করতে পারেন (বা পদ্ধতি) যা বাতিল করে দেবে error
(বা যদি এখনও ঘটে তবে রানটাইম আতঙ্ক বাড়ায়)।
আপনি কোড থেকে কোনও ফাংশনের জন্য ইনপুট মান সরবরাহ করেন এবং আপনি জানেন যে তারা কাজ করে।
এই গ্রেট উদাহরণ template
এবং regexp
প্যাকেজ: আপনি কম্পাইল সময়ে একটি বৈধ টেমপ্লেট বা regexp প্রদান আপনি কি নিশ্চিতরূপে তারা সবসময় রানটাইম এ ত্রুটি ছাড়া পার্স করা যাবে হতে পারে। এই কারণে template
প্যাকেজটি Must(t *Template, err error) *Template
ফাংশন সরবরাহ করে এবং regexp
প্যাকেজটি MustCompile(str string) *Regexp
ফাংশন সরবরাহ করে : তারা ফিরে আসে নাerror
গুলি কারণ তাদের উদ্দেশ্যযুক্ত ব্যবহার যেখানে ইনপুটটি বৈধ হওয়ার গ্যারান্টিযুক্ত।
উদাহরণ:
// "text" is a valid template, parsing it will not fail
var t = template.Must(template.New("name").Parse("text"))
// `^[a-z]+\[[0-9]+\]$` is a valid regexp, always compiles
var validID = regexp.MustCompile(`^[a-z]+\[[0-9]+\]$`)
আপনার কেস ফিরে
যদি আপনি নিশ্চিত হতে পারেন তবে নির্দিষ্ট ইনপুট মানগুলির জন্য Get()
উত্পাদিত হবে না error
, আপনি এমন একটি সহায়তাকারী Must()
ফাংশন তৈরি করতে পারেন যা তা ফেরত দেয় না error
তবে রানটাইম আতঙ্ক বাড়িয়ে দেয় যদি তা এখনও ঘটে:
func Must(i Item, err error) Item {
if err != nil {
panic(err)
}
return i
}
তবে আপনার সমস্ত ক্ষেত্রে এটি ব্যবহার করা উচিত নয়, যখন আপনি নিশ্চিত হন যে এটি সফল হয়। ব্যবহার:
val := Must(Get(1)).Value
বিকল্প / সরলীকরণ
এমনকি আপনি যদি Get()
কলটিকে আপনার সহায়ক কার্যক্রমে অন্তর্ভুক্ত করেন তবে আপনি এটিকে আরও সরল করতে পারেন , আসুন এটি কল করুন MustGet
:
func MustGet(value int) Item {
i, err := Get(value)
if err != nil {
panic(err)
}
return i
}
ব্যবহার:
val := MustGet(1).Value
কিছু আকর্ষণীয় / সম্পর্কিত প্রশ্ন দেখুন:
গোলংয়ে একাধিক রিটার্ন কীভাবে পার্স করবেন
সাধারণ কার্যক্রমে গোলংয়ে 'ঠিক আছে' এর মতো মানচিত্র ফেরান
item
সাধারণতnil
একটি ত্রুটির ক্ষেত্রে হবে । প্রথমে ত্রুটি পরীক্ষা না করে আপনার কোডটি সে ক্ষেত্রে ক্র্যাশ হয়ে যাবে।