জাভাতে কোনও গোটো স্টেটমেন্ট আছে?


259

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

তবে আমি দেখেছি এটি জাভাতে অন্যতম একটি কীওয়ার্ড। এটি কোথায় ব্যবহার করা যাবে? যদি এটি ব্যবহার না করা যায়, তবে কেন এটি জাওয়ার সাথে কীওয়ার্ড হিসাবে অন্তর্ভুক্ত হয়েছিল?


13
কেবলমাত্র
উপদেশের

16
এবং তারপরে "" ক্ষতিকারক হিসাবে বিবেচিত "বিবৃতিতে ক্ষতিকারক হিসাবে বিবেচিত" এবং "" "ক্ষতিকারক হিসাবে বিবেচিত" বিবৃতিতে ক্ষতিকারক হিসাবে বিবেচিত "বিবৃতিতে যান ক্ষতিকারক?" VEEEEERY পুনরাবৃত্ত, এই মেম।
ক্রিস চরবারুক

70
'গোটো' সর্বদা অশুভ - যেমন 'গোটো ওয়ার্ক' বা '
গোটো স্কুল'

24
আসল কারণ হ'ল "জি ** ও" শব্দটি বেশিরভাগ প্রোগ্রামিং ভাষায় অশ্লীল বিবেচনা করা হয়। জাভা ডিজাইনাররা নিরীহ তরুণ প্রোগ্রামারদের দূষিত প্রভাব থেকে রক্ষা করছে। (:-))
স্টিফেন সি

25
গোটোর বিরুদ্ধে জাদুকরী শিকার আমার জীবনের বেশিরভাগ বিরক্তিকর মুহুর্ত তৈরি করেছে। আমি লোকগুলিকে ফাংশনগুলিতে কার্যকারিতা আড়াল করে সি কোডকে প্রতিরোধ করতে দেখেছি, বহু-নেস্টেড লুপগুলিতে অযৌক্তিক প্রস্থান লজিক রেখেছি এবং অন্যথায় কোড-রিভিউতে তাদের কোডের সমালোচনা এড়াতে ওভার-ইঞ্জিনিয়ারিংয়ের কল্পনাযোগ্য জাস্ট প্রতিটি রূপই করেছেন। এই নিয়মটি, "আপনাকে একাধিক আয় এড়াতে হবে" ক্যানার্ডের সাথে বকাঝকা করা হয়েছে। এমন কিছু সময় আছে যখন গোটো জিনিসগুলি কম রক্ষণাবেক্ষণ করে তোলে। কিছু সময় আছে যখন গোটো জিনিসগুলিকে আরও রক্ষণাবেক্ষণ করে তোলে। আমি আশা করছিলাম যে এই জাদুকরী শিকারটি 80 এর দশকে মারা যেত।

উত্তর:


200

জাভা কীওয়ার্ড তালিকার মধ্যে নির্দিষ্ট করে gotoশব্দ, কিন্তু এটা হিসাবে "ব্যবহার করা হয় না" হিসাবে চিহ্নিত করা হয়।

এটি মূল জেভিএমে ছিল ( @ ভিটালিআই ফেডোরেনকো দ্বারা উত্তর দেখুন ), তবে তারপরে সরানো হয়েছে। এটি সম্ভবত জাভাটির পরবর্তী সংস্করণে যুক্ত করা হলে এটি সংরক্ষিত কীওয়ার্ড হিসাবে রাখা হয়েছিল।

যদি gotoতালিকায় না থাকে এবং এটি পরে ভাষার সাথে যুক্ত হয় তবে বিদ্যমান কোড যা শব্দের gotoসনাক্তকারী হিসাবে চিহ্নিত করেছিল (ভেরিয়েবল নাম, পদ্ধতির নাম, ইত্যাদি ...) বিচ্ছিন্ন হয়ে যাবে। তবে যেহেতু gotoএকটি কীওয়ার্ড, এই জাতীয় কোডটি বর্তমান সময়েও সংকলন করবে না এবং বিদ্যমান কোডটি ভঙ্গ না করে এটিকে আসলে পরে কিছু করা সম্ভব হয়।


29
This was probably done in case it were to be added to a later version of Java.আসলে, মূল কারণটি কিছুটা আলাদা (নীচে আমার উত্তর দেখুন)
ভিতালিই ফেদোরেনকো

2
এটি ভাল এবং আকর্ষণীয় তথ্য, তবে এটি কেন এখনও সংরক্ষিত কীওয়ার্ড তা ব্যাখ্যা করে না।
থমাস

@ থমাস আপনি এটি বর্ণনা করেন নি কেন এটি সংরক্ষিত? এটি একটি কীওয়ার্ড, সুতরাং এটি এখন ব্যবহার করা যাবে না; পরে গোটো সমস্যা তৈরি না করেই জীবনে বসতে পারে। যদি এটি কোনও সংরক্ষিত শব্দ না হয়, তবে এটি এখন কোড তৈরি করতে ব্যবহার করতে পারত (ইন্ট গোটো = 2;) যা গোটো চালু করা থাকলে ভেঙে যেত।

230

জেমস গোসলিং gotoবিবৃতিগুলির সমর্থন দিয়ে আসল জেভিএম তৈরি করেছিলেন , কিন্তু তারপরে তিনি এই বৈশিষ্ট্যটি অপ্রয়োজনীয় হিসাবে সরিয়ে দিয়েছিলেন। gotoঅপ্রয়োজনীয় এর মূল কারণটি হ'ল সাধারণত এটিকে আরও পঠনযোগ্য স্টেটমেন্ট (পছন্দ মতো break/continue) বা কোনও পদ্ধতিতে কোডের টুকরো বের করে প্রতিস্থাপন করা যায়।

সূত্র: জেমস গোসলিং, প্রশ্নোত্তর পর্ব


24
"... বা কোনও পদ্ধতিতে কোডের টুকরো বের করে" - এটি যথাযথ লেজ কল নির্মূল না করে খুব শীতল হতে হবে।
নাম প্রদর্শন করুন

45
কখনও কখনও, একটি বিচক্ষণ ব্যবহারের goto হয় , কিছু প্রকাশ করার সবচেয়ে readyble এবং পরিষ্কার ভাবে তাই এটি অন্য কিছু মধ্যে অত্যাচার লাগুক আর নাই লাগুক হয় কম পাঠযোগ্য
হস্তান্তরকারী

1
@ ডেডুপ্লিকেটর গোটোর ব্যবহার, এটি যেমন বিচার্য হয় তেমনি সর্বদা ত্রুটির প্রবণ থাকে।
ইলেবী মুরাত

@ উত্সাহকটি সি ++ তে ভাল অভ্যাস হিসাবে বিবেচিত গোটোর একমাত্র ব্যবহার বিরতি / অবিরত দ্বারা সমর্থনপ্রাপ্ত।
শীতকাল

2
জাভাতে সংরক্ষিত কীওয়ার্ড হওয়া গোটো দুর্দান্ত কারণ এটি লোকদের "গোটো:" নামকরণ করা থেকে বাধা দেয়।
শীতকাল

147

মূলশব্দটি বিদ্যমান, তবে এটি প্রয়োগ করা হয়নি।

গোটো ব্যবহারের একমাত্র ভাল কারণ যা আমি ভাবতে পারি তা হ'ল:

for (int i = 0; i < MAX_I; i++) {
    for (int j = 0; j < MAX_J; j++) {
        // do stuff
        goto outsideloops; // to break out of both loops
    }
}
outsideloops:

জাভাতে আপনি এটি এইভাবে করতে পারেন:

loops:
for (int i = 0; i < MAX_I; i++) {
    for (int j = 0; j < MAX_J; j++) {
        // do stuff
        break loops;
    }
}

1
@ জোল্টন না - এটি প্রথম লুপের ঠিক আগে কোডটিকে লেবেলে পুনঃনির্দেশ করে।
অ্যাসিলিয়াস

21
@Asslias ভাল, না বেশ। লেবেলটি বাইরের লুপটিকে লেবেল দেয়। তারপরে break loops"" নামক লুপটি ভেঙে ফেলা হয়েছে "এর অর্থ loops। হতে পারে retrospect এ লেবেলের জন্য আরও ভাল নাম হতে পারে outer
jonnystoten

8
"গোটো ব্যবহারের একমাত্র ভাল কারণ" দ্রুত এবং নোংরা ছোট্ট প্রোগ্রামগুলির জন্য একটি শর্তহীন অসীম লুপ দরকার গোটোর দুর্দান্ত ব্যবহার। ব্যবহার করা while (true) {... }ওভারকিল গোটো তার অপ্রয়োজনীয় ব্যবহারের জন্য প্রায়শই কলঙ্কিত হয় তবে আমি যুক্তি দিয়েছি যে বুলিয়ান আক্ষরিকের সাথে অপ্রয়োজনীয় তুলনাগুলি গোটোর চেয়েও খারাপ।
আলেকজান্ডার - মনিকা

1
লুপগুলির লেবেলগুলি লুপগুলির পরে হওয়া উচিত নয়?
GC_

1
আমি সম্প্রতি আবিষ্কার করেছি, যে এই লেবেলিং কৌশলটি একটি continue LABEL;বিবৃতিতে সম্মিলিতভাবে খুব দরকারী । সুতরাং আপনি একটি বহিরাগত মিথ্যা লুপ চালিয়ে যেতে পারেন।
infotoni91

43

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html

"কীওয়ার্ড কনস্ট এবং গোটো বর্তমানে ব্যবহার না করা সত্ত্বেও সংরক্ষিত রয়েছে।"


12
"স্বাক্ষরবিহীন "ও নেই! (দীর্ঘশ্বাস)
ম্যাথিউউ

জাভাতে সমস্ত আদিম ধরণের স্বাক্ষরিত হওয়ায়, তা উপলব্ধি করে।
mwieczorek

1
পছন্দ করুন "চর" একটি আদিম ধরণের এবং এটি স্বাক্ষরবিহীন।
সের্গেই ক্রিভেনকভ

29

ভাষা ডিজাইনাররা যদি প্রয়োজনীয়তা অনুভব করে তবে সেগুলি একদিন ব্যবহার করা যেতে পারে।

এছাড়াও, যদি এই কীওয়ার্ডগুলির ভাষা (যেমন, সি, সি ++) থাকা প্রোগ্রামগুলির প্রোগ্রামাররা ভুল করে সেগুলি ব্যবহার করে, তবে জাভা সংকলক একটি দরকারী ত্রুটি বার্তা দিতে পারে।

অথবা সম্ভবত এটি গোটো ব্যবহার করে প্রোগ্রামারদের থামানো ছিল :)


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

1
আমি মনে করি না যে আমার যুক্তিটি বোঝায় যে সমস্ত কিওয়ার্ড হবে। অনেক প্রোগ্রামিং ভাষা জুড়ে কীওয়ার্ডগুলির একটি ছোট সেট রয়েছে যা জাভাতে কার্যকরভাবে সনাক্ত এবং পরিচালনা করতে পারে। জাভা সংরক্ষিত gotoএবং constএর সি / সি ++ reserved তিহ্যের প্রতিফলন ঘটায় তবে তারা অ-বাস্তবায়িত থাকে (যদিও পরবর্তীকালের বাস্তবায়ন সম্পর্কে বিতর্ক হয়েছে)। আরও দু'জনের মতো assertএবং enumপ্রাথমিকভাবে সংরক্ষিত ছিল না, তবে বাস্তবায়িত হয়ে গেলে সম্ভবত এটি করা উচিত ছিল। তবে হ্যান্ডসাইট দারুণ একটি জিনিস।
ডেভ

19

এগুলি ভবিষ্যতের ব্যবহারের জন্য সংরক্ষিত রয়েছে (দেখুন: জাভা ভাষার কীওয়ার্ড )

কীওয়ার্ডগুলি কনস্ট এবং গোটো সংরক্ষিত রয়েছে, যদিও বর্তমানে তা ব্যবহৃত হয় না।

কারণ কেন আছে জাভা কোন এতে যান বিবৃতি "খুঁজে পাওয়া যেতে পারে জাভা ভাষা পরিবেশ ":

জাভার কোনও গেটো স্টেটমেন্ট নেই। অধ্যয়নগুলিতে চিত্রিত হয়েছে যে গোটো (মিস) কেবল "কারণ সেখানে আছে" না তার চেয়ে বেশি ব্যবহৃত হয়। গোটো বাদ দেওয়া ভাষার সরলকরণের দিকে পরিচালিত করে - উদাহরণস্বরূপ, বিবৃতিতে একটি এর মধ্যকার গোটোর প্রভাব সম্পর্কে কোনও নিয়ম নেই। সি কোডের প্রায় ১০০,০০০ লাইনের উপর অধ্যয়নগুলি নির্ধারিত করেছে যে মোটামুটি 90% গোটো স্টেটমেন্টগুলি নেস্টেড লুপগুলি ভেঙে ফেলার প্রভাব অর্জন করার জন্য খাঁটিভাবে ব্যবহৃত হয়েছিল। উপরে উল্লিখিত হিসাবে, বহু-স্তরের বিরতি এবং গোটো স্টেটমেন্টগুলির প্রয়োজনীয়তা সর্বাধিক অপসারণ চালিয়ে যান।


gotoসংরক্ষিত, তবে ভবিষ্যতে ব্যবহারের জন্য নয়।
লার্নের মারকুইস

17

জাভাতে "চালিয়ে" লেবেল কীভাবে ব্যবহার করবেন তার একটি উদাহরণ:

public class Label {
    public static void main(String[] args) {
        int temp = 0;
        out: // label
        for (int i = 0; i < 3; ++i) {
            System.out.println("I am here");
            for (int j = 0; j < 20; ++j) {
                if(temp==0) {
                    System.out.println("j: " + j);
                    if (j == 1) {
                        temp = j;
                        continue out; // goto label "out"
                    }
                }
            }
        }
        System.out.println("temp = " + temp);
    }
}

ফলাফল:

I am here // i=0
j: 0
j: 1
I am here // i=1
I am here // i=2
temp = 1

10

এটি বুঝতে গুরুত্বপূর্ণ gotoযে প্রোগ্রামাররা মেশিন কোড এবং অ্যাসেম্বলি ভাষায় প্রোগ্রাম করার দিনগুলি থেকে নির্মাণটি অবশিষ্ট রয়েছে। যেহেতু এই ভাষাগুলি এত বেসিক (যেমন প্রতিটি নির্দেশ কেবল একটি কাজ করে), প্রোগ্রাম নিয়ন্ত্রণ প্রবাহ gotoবিবৃতি সহ সম্পূর্ণভাবে সম্পন্ন হয় (তবে সমাবেশ ভাষায়, এগুলিকে জাম্প বা শাখা হিসাবে উল্লেখ করা হয় নির্দেশাবলী )।

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

এটি স্পষ্ট যে জাভা সি / সি ++ এর একটি বিবর্তন। জাভা সি থেকে প্রচুর বৈশিষ্ট্য ভাগ করে, তবে বিশদ বিবরণকে অনেকটা বিমূর্ত করে এবং তাই কেবল আলাদাভাবে লেখা হয়। জাভা একটি খুব উচ্চ-স্তরের ভাষা, সুতরাং gotoযখন নিম্ন-স্তরের বৈশিষ্ট্যগুলি যেমন ফাংশনগুলির মতো আরও উচ্চ-স্তরের নির্মাণ করে, প্রতিটির জন্য, এবং লুপগুলি যখন প্রোগ্রাম নিয়ন্ত্রণ প্রবাহ করে তখন এটির প্রয়োজন হয় না । আপনি যদি gotoকোনও ফাংশনে থাকতেন এবং অন্য ফাংশনে কোনও লেবেলে একটি করে থাকেন তা কল্পনা করুন । অন্য ফাংশন ফিরে আসলে কি হবে? এই ধারণাটি অযৌক্তিক।

এটি জাভা কেন gotoবিবৃতি অন্তর্ভুক্ত করে এখনও এটি সংকলন করতে দেয় না তা জরুরী জবাব দেয় না , তবে gotoনিম্ন স্তরের অ্যাপ্লিকেশনগুলিতে কেন প্রথম স্থানে ব্যবহৃত হয়েছিল এবং কেন এটি কেবল অর্থবোধ করে না তা জানা গুরুত্বপূর্ণ জাভা ব্যবহৃত।


"প্রোগ্রাম নিয়ন্ত্রণ প্রবাহ গোটো দিয়ে পুরোপুরি সম্পন্ন হয়"। ঠিক আছে, সবসময় শর্তহীন গোটো না।
পিটার মর্টেনসেন

অন্য ফাংশনে একটি ফাংশন থেকে "গোটো" দিয়ে একটি লেবেলে ঝাঁপ দেওয়াও সি / সি ++ এ সম্ভব নয়। সি / সি ++ এ গোটো একক ফাংশন ব্লকে সীমাবদ্ধ।
ব্যবহারকারী 2328447

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

10

না, gotoব্যবহৃত হয় না তবে আপনি লেবেল সংজ্ঞায়িত করতে পারেন এবং লেবেল পর্যন্ত একটি লুপ রেখে যেতে পারেন। আপনি লেবেলটি ব্যবহার breakবা continueঅনুসরণ করতে পারেন । সুতরাং আপনি একাধিক লুপ স্তর লাফিয়ে যেতে পারেন। কটাক্ষপাত আছে টিউটোরিয়াল


9

না, ধন্যবাদ, gotoজাভাতে নেই।

gotoশব্দ শুধুমাত্র সংরক্ষিত হয়, কিন্তু ব্যবহার করা হয় না (একই জন্য যায় const)।


আমি কি জানতে পারি এখানে সংরক্ষিত মানে কী? কোডে গোটো এবং কনস্ট ব্যবহার করা যদি কোনও ভাল অনুশীলন না হয় তবে তারা কেন এটি সংরক্ষণ করে? আপনি দয়া করে ব্যাখ্যা করতে পারেন?
গোপী

@ শ্রী কুমার: @ অ্যাপ্লিকেশনের উত্তর দেখুন, এটি বিদ্যমান তবে কার্যকর হয়নি not
ভ্যালেন্টিন রোচার

1
@ শ্রী কুমার: সংরক্ষিত কীওয়ার্ডগুলি তাদের পরিবর্তনশীল নাম বা অনুরূপ হিসাবে ব্যবহার করতে বাধা দেয়। এইভাবে, এই কীওয়ার্ডগুলি জাভাটির ভবিষ্যতের সংস্করণগুলিতে পুরানো উত্স কোডটি না ভেঙে প্রয়োগ করা যেতে পারে যা অন্যথায় তাদের ব্যবহার করতে পারে।
পিটার ডি সেকো

8

কারণ এটি সমর্থিত নয় এবং আপনি এমন gotoকীওয়ার্ডটি চাইবেন যা কিছুই করেনি বা একটি ভেরিয়েবল নামেনি goto?

যদিও আপনি কার্যকরভাবে কী করতে পারেন তা করতে break label;এবং continue label;বিবৃতি ব্যবহার করতে পারেন gotoতবে আমি এটি সুপারিশ করব না।

public static void main(String [] args) {

     boolean t = true;

     first: {
        second: {
           third: {
               System.out.println("Before the break");

               if (t) {
                  break second;
               }

               System.out.println("Not executed");
           }

           System.out.println("Not executed - end of second block");
        }

        System.out.println("End of third block");
     }
}

10
-1 কেন আমাকে গোটো নামে একটি পরিবর্তনশীল বা পদ্ধতি রাখার অনুমতি দেওয়া হবে না?
মাইকেল বর্গওয়ার্ট

4
কারণ এটি প্রোগ্রামিংয়ের ভূমিতে একটি অর্থ রয়েছে যা জাভার ক্ষেত্রে প্রযোজ্য নয়। এটি পরিবর্তনশীল নামের একটি নিম্ন পছন্দ poor
pjp

একটি ভেরিয়েবল 'মুদ্রণ' কি জন্য ব্যবহার করা হবে? আপনি যে শব্দগুলি উল্লেখ করেছেন সেগুলি ভেরিয়েবল বা কীওয়ার্ডের চেয়ে পদ্ধতির নামের মতো।
pjp

3
-১: প্রথমত, জাভা "গোটো" ফ্লো কন্ট্রোল স্টেটমেন্ট সমর্থন করে না, এর অর্থ এই নয় যে এর কারণ "গোটো" কীওয়ার্ড রয়েছে যা কিছুই করে না। দ্বিতীয়ত, "গোটো" একটি দুর্বল পরিবর্তনশীল নাম হতে পারে তবে এটি একটি দুর্দান্ত পদ্ধতির নাম হতে পারে, যা আমরা ব্যবহার করতে পারি না কারণ "গোটো" একটি মূলশব্দ। তৃতীয়ত, "ব্রেক লেবেল" এবং "চালিয়ে যাওয়া লেবেল" খুব ভাল কারণে বিদ্যমান, সুতরাং "এটি সুপারিশ না করা" খুব কার্যকর নয়। এবং চতুর্থ, যেহেতু সান বলেছেন যে এটি "বর্তমানে ব্যবহৃত হয় না", সম্ভবত এটির অর্থ সম্ভবত তারা একবার প্রয়োগ করার পরিকল্পনা করেছিল তবে তারা অন্যথায় সিদ্ধান্ত নেওয়ার পরে কীওয়ার্ডটি থেকে মুক্তি পেতে চান না।
ভোজিসলাভ স্টোজকোভিক

2
পছন্দ করেছেন 1) যে হয় কেন এটা কিছুই না, কারণ এটা এটা সমর্থন করেন না। জেএলএস অনুসারে The keywords const and goto are reserved, even though they are not currently used. This may allow a Java compiler to produce better error messages if these C++ keywords incorrectly appear in programs.এর অর্থ "আমরা এটি ব্যবহার করি না, সুতরাং আপনি যদি কোনও সি ++ ব্যাকগ্রাউন্ড থেকে আসেন তবে আমরা আপনাকে এটি একেবারেই ব্যবহার করতে দেব না" " 2) gotoএকটি ভয়ঙ্কর পদ্ধতির নাম। দুঃখিত। 3) বিরতি এবং চালিয়ে যাওয়ার পরামর্শ দেওয়া হয়, তবে এখানে ব্যবহৃত পথে নয় । 4) "খুব সম্ভবত" [উদ্ধৃতি প্রয়োজন]।
কর্সিকা

7

না, gotoএকটি সংরক্ষিত শব্দ হওয়া সত্ত্বেও জাভাতে ব্যবহৃত হয় না। একই জন্য সত্য const। এগুলি উভয়ই সি ++ এ ব্যবহৃত হয়, সম্ভবত এটির কারণেই তারা সংরক্ষণ করা হয়েছে; উদ্দেশ্যটি সম্ভবত সি ++ প্রোগ্রামারদের জাভাতে স্থানান্তরিত করার বিভ্রান্তি এড়াতে এবং সম্ভবত জাভা পরবর্তী সংস্করণগুলিতে তাদের ব্যবহারের বিকল্পটি রাখা উচিত ছিল।


1
আমি সত্যিই আশা করি gotoঅদূর ভবিষ্যতে কমপক্ষে; সমর্থিত নয়;)
বোজহো

6
@ বোজহো: ভাল, এটি এমন কিছু উদ্ভাবনী নতুন বৈশিষ্ট্যের জন্য ব্যবহার করা যেতে পারে যা খারাপ পুরানো "ক্ষতিকারক" গোটোর সাথে একেবারেই করার মতো নয়।
মাইকেল বর্গওয়ার্ট

3

নোট করুন যে আপনি গোটো দ্বারা সৌম্য ব্যবহারের বেশিরভাগ ব্যবহার প্রতিস্থাপন করতে পারেন

  • প্রত্যাবর্তন

  • বিরতি

  • ব্রেক লেবেল

  • শেষ পর্যন্ত চেষ্টা-ধরা ভিতরে throwোকান


5
ব্যতিক্রমগুলি প্রবাহ নিয়ন্ত্রণের জন্য কখনও ব্যবহার করা উচিত নয়
ChssPly76 ২

13
ব্যতিক্রমগুলি প্রবাহ নিয়ন্ত্রণের জন্য ব্যবহৃত হয় , তবে কেবলমাত্র ব্যতিক্রমী ক্ষেত্রে ব্যবহার করা উচিত। উদাহরণস্বরূপ, সি তে গোটোর ব্যবহারগুলির মধ্যে একটি হ'ল ত্রুটি-পরিচালনা, বিশেষত যদি এটি পরিষ্কার করার সাথে জড়িত থাকে।
স্টার ব্লু

2
@ স্টারব্লিউ, আপনি আমার মুখ থেকে শব্দগুলি বের করেছেন। একটি ব্যতিক্রম নিক্ষেপ করা নিয়ন্ত্রণ প্রবাহ। সি তে, আপনি হ্যান্ডলিং কোডটিতে প্রথম সেটজ্যাম্প এবং ব্যতিক্রম হিসাবে লংজ্যাম্প () চালিয়ে যাওয়ার মাধ্যমে আপনি কিছুটা পরিষ্কারভাবে সেটজ্যাম্প / লংজ্যাম্পের মাধ্যমে ব্যতিক্রম হ্যান্ডলিং বাস্তবায়ন করতে পারেন।

আমি যদি একটি পরীক্ষা করতে চাই এবং সত্য হয় তবে পদ্ধতির অর্ধেকটি এড়িয়ে যেতে চাই। না গিয়ে আমার অবশ্যই অন্য কোনও দৈত্য ব্যবহার করা উচিত। আইএমও এটি অনেক কুৎসিত হিসাবে অনেকগুলি
প্যারান্থেসিস

1
@WVrock আপনি চেষ্টা করতে পারেনreturn
অ্যান্ড্রু লাজারাস

2

যেমন উল্লেখ করা হয়েছিল, gotoজাভাতে কোনও নেই , তবে সান gotoজাভাতে একদিন যুক্ত হওয়ার মতো মনে হলে কীওয়ার্ডটি সংরক্ষিত ছিল । তারা খুব বেশি কোড না ভাঙিয়ে এটি যুক্ত করতে সক্ষম হতে চেয়েছিল তাই তারা কীওয়ার্ডটি সংরক্ষণ করে। নোট করুন যে জাভা 5 এর সাথে তারা enumকীওয়ার্ডটি যুক্ত করেছে এবং এটি এতটা কোডও ভাঙেনি।

যদিও জাভা কোন হয়েছে goto, এটা কিছু নির্মান হয়েছে কিছু ব্যবহারগুলির যা মিলা goto, যথা করতে সক্ষম হচ্ছে breakএবং continueনামে লুপ সঙ্গে। এছাড়াও, finallyএকধরনের বাঁকা হিসাবে ভাবা যেতে পারে goto


1

একই নামের সাথে ভেরিয়েবলের ঘোষণা নিষিদ্ধ করা।

যেমন int i = 0, goto;


3
তবে কেন ? আমাদের কেন এই ঘোষণা দেওয়ার অনুমতি দেওয়া হবে না?
ApproachingDarknessFish

1

আপনি যা করবেন না সেগুলির মধ্যে এটির একটি খুব বিবেচনা করা হয় তবে এটি সম্ভবত বিকাশকারীদের জন্য বিভ্রান্তি এড়াতে সংরক্ষিত শব্দ হিসাবে তালিকাভুক্ত হয়েছিল।


1

http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-6.html#jvms-6.5.goto

যদি আপনাকে বলা হয় যে জাভাতে কোনও গোটো বিবৃতি নেই তবে আপনাকে বোকা বানানো হয়েছে। প্রকৃতপক্ষে, জাভাতে 'উত্স' কোডের দুটি স্তর রয়েছে।


5
এটি বলার মতো যে কোনও ভাষার গোটো রয়েছে কারণ এগুলির সমস্তের নীচে অ্যাসেম্বলি কোডটিতে একটি শর্তহীন শাখা রয়েছে। বাইট কোডে গোটো থাকার অর্থ এই নয় যে জাভাতে একটি গোটো রয়েছে কারণ "জাভাতে" এর অর্থ "জাভা ভাষায়", এবং বাইট কোড উত্সের স্তর নয়।

@ tgm1024, "জাভাতে" এর অর্থ "জাভা প্ল্যাটফর্মে" হিসাবেও ব্যাখ্যা করা যেতে পারে। জাভা সংকলক জাভা বাইটকোড উত্পাদন করতে হবে বা আউটপুট জাভা প্ল্যাটফর্ম JVM এ কাজ করবে না। সি ++, উদাহরণস্বরূপ, সংকলন আউটপুট নির্দিষ্ট করে না এবং সংকলক মেশিন কোডের (বা অন্য কোনও কোড) কোনও ফর্ম উত্পাদন করতে বিনামূল্যে। জাভা বাইটকোড প্রোগ্রামযুক্ত অ্যাপ্লিকেশনটিকে "জাভা অ্যাপ্লিকেশন" বলা যেতে পারে তবে মেশিন কোড প্রোগ্রামিং অ্যাপ্লিকেশনটিকে "সি ++ অ্যাপ্লিকেশন" বলা যায় না।
মিকায়েল লিন্ডলফ

2
জাভা বাইটকোড কী তা আমি পুরোপুরি জানি। আমি ১৯৯ 1996 সালে প্রথম জাভাতে কোডিং করছিলাম And এবং আপনি অন্যান্য ভাষাতে জাভিএমের জন্য জাভা বাইটকোড তৈরি করতে পারেন। যেখানে আমি আপনাকে সংশোধন করছি এই ধারণাটি উত্সের দুটি স্তর রয়েছে। ওখানে নেই. আপনার জাভা উত্স রয়েছে এবং এটি জাভা বাইট কোড (জেভিএম দ্বারা সম্পাদিত) সংকলিত হয়েছে এবং এটি উত্সের অতিরিক্ত স্তর নয়। কেবলমাত্র বাইট কোডে একটি "গোটো" থাকার অর্থ জাভাতে একটি "গোটো" আছে তা এই নয়। জাভা ব্রেক নামকরণ করেছে এবং নাম অব্যাহত রেখেছে, তবে কোন গোট নেই।

@ tgm1024 আমি একটি ডাউনভোট দ্বারা জাগ্রত হয়েছিলাম: এটি সহজেই মনে হতে পারে যে আপনি শেষ মন্তব্যটি করেছেন এবং আপনার শংসাপত্রগুলি চিত্তাকর্ষক হওয়ার কারণে আমি যুক্তিটি হারিয়েছি। আমার বক্তব্য, যা আমি তৈরি করছিলাম তা হ'ল জাভা বাইটকোড দিয়ে প্রোগ্রাম করা খুব সম্ভব। : আপনি আশ্বাস করার জন্য, এখানে যে বিষয়ে এমনকি একটি প্রশ্ন stackoverflow.com/questions/3150254/...
Mikael Lindlöf

1

নীচের লিঙ্কটি দেখুন সমস্ত জাভা সংরক্ষিত শব্দগুলি দেখায় এবং সেগুলিতে কোন সংস্করণ যুক্ত হয়েছিল তা আপনাকে জানায়।

http://java.sun.com/docs/books/tutorial/java/nutsandbolts/_keywords.html

গোটো সংরক্ষিত আছে, যদিও এটি বর্তমানে ব্যবহৃত হয় না, তবে কখনও কখনও বলবেন না :)


1

আমি gotoউভয়ের কোনও অনুরাগী নই , কারণ এটি কোডটি কম পাঠযোগ্য করে তোলে। তবে আমি বিশ্বাস করি যে এই নিয়মের ব্যতিক্রম আছে (বিশেষত যখন লেক্সার এবং পার্সারদের কথা আসে!)

অবশ্যই আপনার প্রোগ্রামটি সবসময় ক্লিন নরমালফর্মে এ্যাসেমব্লারের মতো কিছুতে অনুবাদ করে আনতে পারেন এবং এরপরে এমন কিছু লিখতে পারেন

int line = 1;
boolean running = true;
while(running)
{
    switch(line++)
    {
        case 1: /* line 1 */
                break;
        case 2: /* line 2 */
                break;
        ...
        case 42: line = 1337; // goto 1337
                break;
        ...
        default: running = false;
                break;
    }
}

(সুতরাং আপনি মূলত একটি ভিএম লিখুন যা আপনার বাইনারি কোড সম্পাদন করে ... যেখানে lineনির্দেশিকা নির্দেশকের সাথে মিলে যায়)

এটি কোডের চেয়ে অনেক বেশি পঠনযোগ্য যা ব্যবহার করে goto, তাই না?


পরবর্তী প্রশ্ন, "পাইথনে কোনও সুইচ স্টেটমেন্ট রয়েছে"
মার্ক কে কোয়ান

0

অবশ্যই এটি মূলশব্দ, তবে এটি উত্স কোডের স্তরে ব্যবহৃত হয় না।

তবে আপনি যদি জেসমিন বা অন্যান্য নিম্ন স্তরের ভাষা ব্যবহার করেন, যা বাইটোকোডে রূপান্তরিত হয়, তবে "গোটো" সেখানে রয়েছে


-1

কারণ জাভা ভাষা এটি ব্যবহার না করে, জেভিএম বাইটকোড করে।


7
তাহলে কেন ভাষার কোনও loadকীওয়ার্ড নেই?
ApproachingDarknessFish

3
@ গ্র্যাবনিট, বাইটোকোডে গোটো হওয়ার অর্থ উচ্চ স্তরের সংরক্ষিত শব্দের জন্য কোনও অর্থ নয়।

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