গো ভাষার কি ফাংশন / পদ্ধতি ওভারলোডিং আছে?


127

আমি যেতে একটি সি লাইব্রেরি পোর্টিং করছি। এসি ফাংশন (ভারার্গস সহ) এর মতো সংজ্ঞা দেওয়া হয়েছে:

curl_easy_setopt(CURL *curl, CURLoption option, ...); 

সুতরাং আমি মোড়ক সি ফাংশন তৈরি করেছি:

curl_wrapper_easy_setopt_str(CURL *curl, CURLoption option, char* param);
curl_wrapper_easy_setopt_long(CURL *curl, CURLoption option, long param);

যদি আমি গোতে ফাংশনটি এভাবে সংজ্ঞায়িত করি:

func (e *Easy)SetOption(option Option, param string) {
    e.code = Code(C.curl_wrapper_easy_setopt_str(e.curl, C.CURLoption(option), C.CString(param)))
}

func (e *Easy)SetOption(option Option, param long) {
    e.code = Code(C.curl_wrapper_easy_setopt_long(e.curl, C.CURLoption(option), C.long(param)))
}

গো সংকলক অভিযোগ করে:

*Easy·SetOption redeclared in this block

সুতরাং গো সমর্থন ফাংশন (পদ্ধতি) ওভারলোডিং, বা এই ত্রুটিটি অন্য কোনও অর্থ বোঝায়?

উত্তর:


165

না এটা না।

দেখুন যান ভাষা প্রায়শই জিজ্ঞাসিত প্রশ্নাবলী , এবং বিশেষভাবে অধ্যায় ওভারলোডিং

টাইপ ম্যাচিং পাশাপাশি করার প্রয়োজন না হলে পদ্ধতি প্রেরণাকে সহজ করা হয়। অন্যান্য ভাষার অভিজ্ঞতা আমাদের বলেছিল যে একই নামের সাথে বিভিন্ন পদ্ধতি রয়েছে তবে বিভিন্ন স্বাক্ষর মাঝে মাঝে দরকারী ছিল তবে এটি ব্যবহারে বিভ্রান্তিকর এবং ভঙ্গুরও হতে পারে। কেবল নাম অনুসারে মিলে যাওয়া এবং ধরণের ধরণের ধারাবাহিকতার প্রয়োজন গো-এর টাইপ সিস্টেমে একটি সহজ সরল সিদ্ধান্ত ছিল।

আপডেট: 2016-04-07

যদিও গো-তে এখনও অতিরিক্ত লোড ফাংশন নেই (এবং সম্ভবত কখনই হবে না), ওভারলোডিংয়ের সবচেয়ে দরকারী বৈশিষ্ট্য, omচ্ছিক আর্গুমেন্টগুলির সাথে ফাংশনটি কল করা এবং বাদ দেওয়াগুলিগুলির জন্য ডিফল্ট ডিফল্টগুলি অনুকরণ করা যায় যা এর পরে যুক্ত করা হয়েছে। তবে এটি টাইপ চেকিংয়ের ক্ষতিতে আসে।

উদাহরণস্বরূপ: http://changelog.ca/log/2015/01/30/golang


20

এর মতে এটি হ'ল : http://golang.org/doc/go_for_cpp_programmers.html

ইন ধারণামূলক পার্থক্য অধ্যায়, এটা বলেন:

"গো ফাংশন ওভারলোডিং সমর্থন করে না এবং ব্যবহারকারী সংজ্ঞায়িত অপারেটরদের সমর্থন করে না।"


আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.