একটি ঘোষণায় "_," (আন্ডারস্কোর কমা) কী?


102

এবং আমি এই ধরণের পরিবর্তনশীল ঘোষণা বুঝতে পারছি না:

_, prs := m["example"]

" _," ঠিক কী করছে এবং কেন তারা এর পরিবর্তে এ জাতীয় একটি ভেরিয়েবল ঘোষণা করেছে

prs := m["example"]

(আমি এটি গো বাই উদাহরণের অংশ হিসাবে পেয়েছি : মানচিত্র )


4
ভবিষ্যতে ভাষা প্রশ্ন থাকলে দয়া করে কটাক্ষপাত আছে বৈশিষ্ট প্রথম। এটি আপনার সমস্ত প্রশ্নের উত্তর দেওয়া উচিত।
ফুজ

একটি মন্তব্য হিসাবে: prsসম্ভবত "বর্তমান" জন্য দাঁড়িয়েছে। আপনার উদাহরণে কোড উপস্থিতি বা একটি এন্ট্রি অভাবে চেক করা হয় "example"মধ্যে mমানচিত্র।
dyoo

7
@FUZxxl হ্যাঁ, আমি সেখানে আগে একবার দেখেছিলাম, তবে আমি বৈশিষ্টটির নাম জানিনা, তাই এটি খুঁজে পেলাম না। এছাড়াও আমি প্রোগ্রামিং ভাষাগুলি খুব শিক্ষাগত না হওয়ার জন্য সরকারী চশমা খুঁজে পাই এবং উদাহরণস্বরূপ শিখি।
কানসুলার

@ অডিও একবার নীচের ব্যাখ্যাটি পেয়ে আমি বুঝতে পারলাম এর অর্থটি, তবে অন্য কারও কাছে যদি একই প্রশ্ন থাকে তবে লক্ষণীয়!
কানসুলার

8
@FUZxxl: আমি জানি না। এসও-তে জিজ্ঞাসা করা বেশিরভাগ প্রশ্নের উত্তর সম্ভবত কোথাও উপলব্ধ কিছু থ্রেশহোল্ড বিদ্যমান, যার নীচে সম্ভবত একটি প্রশ্ন জিজ্ঞাসা করা উচিত নয়, তবে আমি মনে করি না যে এই প্রশ্নটি তার নীচে পড়েছে।
26

উত্তর:


122

এটি রিটার্ন মানগুলির জন্য সমস্ত ভেরিয়েবল ঘোষিত হওয়া এড়িয়ে চলে।
একে ফাঁকা শনাক্তকারী বলা হয় ।

হিসাবে:

_, y, _ := coord(p)  // coord() returns three values; only interested in y coordinate

( অন্য ' _' ব্যবহারের ক্ষেত্রে আমদানির জন্য হয় )

যেহেতু এটা ফেরত মান বাতিল, এটা সহায়ক যখন আপনি যেমন ", ফিরে মান মাত্র এক চেক করতে চান কিভাবে একটি মানচিত্র কী অস্তিত্ব পরীক্ষা কিভাবে? মধ্যে" দেখানো " কার্যকরী যান, মানচিত্র ":

_, present := timeZone[tz]

প্রকৃত মান সম্পর্কে চিন্তা না করে মানচিত্রে উপস্থিতির জন্য পরীক্ষা করতে, আপনি ফাঁকা শনাক্তকারী, একটি সাধারণ আন্ডারস্কোর ( _) ব্যবহার করতে পারেন ।
ফাঁকা শনাক্তকারীকে নির্বিঘ্নে বাতিল করা মান সহ যে কোনও ধরণের যে কোনও মান নির্ধারিত বা ঘোষণা করা যেতে পারে।
কোনও মানচিত্রে উপস্থিতি পরীক্ষার জন্য, মানটির জন্য সাধারণ ভেরিয়েবলের জায়গায় ফাঁকা শনাক্তকারী ব্যবহার করুন।

জাসর মন্তব্যগুলিতে যুক্ত হিসাবে :

"সাধারণভাবে স্বীকৃত মান" হ'ল সদস্যতা পরীক্ষার ভেরিয়েবলগুলিকে "ওকে" বলা (কোনও চ্যানেল পঠিত বৈধ ছিল কি না তা যাচাই করার জন্য একই)

এটি আপনাকে পরীক্ষার সাথে একত্রিত করতে দেয়:

if _, err := os.Stat(path); os.IsNotExist(err) {
    fmt.Printf("%s does not exist\n", path)
}

আপনি এটি লুপেও দেখতে পাবেন:

আপনার যদি সীমাতে (মান) কেবলমাত্র দ্বিতীয় আইটেমের প্রয়োজন হয় তবে প্রথমটি বাতিল করতে খালি শনাক্তকারী, একটি আন্ডারস্কোর ব্যবহার করুন:

sum := 0
for _, value := range array {
    sum += value
}

একটি ভাল উদাহরণ দেওয়ার জন্য ধন্যবাদ। ধারণাটি বুঝতে আমার কিছুটা চিন্তাভাবনা হয়েছিল, তবে এখন আমি তা করি!
কানসুলার

নোট করুন যে আইএমই "সাধারণত স্বীকৃত মান" হ'ল সদস্যতা পরীক্ষার ভেরিয়েবলগুলিকে "ওকে" বলা (কোনও চ্যানেল পঠিত বৈধ ছিল কি না তা যাচাইয়ের জন্য একই)।
লিনিয়ারজয়েট্রপ

4
@ জাসর আমি সম্মত। আমি আরও ভিজিবিলিটির জন্য উত্তরে আপনার মন্তব্য অন্তর্ভুক্ত করেছি এবং কয়েকটি অতিরিক্ত উদাহরণ যুক্ত করেছি।
ভোনসি

67

গো সংকলক আপনাকে এমন ভেরিয়েবলগুলি তৈরি করতে দেয় না যা আপনি কখনও ব্যবহার করবেন না।

for i, value := range x {
   total += value
}

উপরের কোডটি "আমি ঘোষিত এবং ব্যবহার না করে" একটি ত্রুটি বার্তা ফিরিয়ে দেবে।

যেহেতু আমরা আমাদের লুপের ভিতরে আমি ব্যবহার করি না আমাদের এটিকে এটিতে পরিবর্তন করতে হবে:

for _, value := range x {
   total += value
}

15
একটি ফাঁকা শনাক্তকারী হিসাবে _ থাকার কারণটি বোঝার জন্য আপনার প্রথম বাক্যটি গুরুত্বপূর্ণ ছিল।
তারিক

4

_খালি শনাক্তকারী। অর্থ যে এটি নির্ধারিত হওয়া উচিত তা বাতিল করা হয়।

এখানে এটি exampleবাতিল হওয়া কীটির মান । কোডের দ্বিতীয় লাইনের উপস্থিতি বুলিয়ানটি ফেলে দেওয়া হবে এবং মানটি সংরক্ষণ করা হবে prs
সুতরাং কেবল মানচিত্রে উপস্থিতি পরীক্ষা করতে আপনি মানটি বাতিল করতে পারেন। সেট হিসাবে মানচিত্রটি ব্যবহার করতে এটি ব্যবহার করা যেতে পারে।


4

ফাঁকা শনাক্তকারী ব্যবহার করা যেতে পারে যখনই সিনট্যাক্সের একটি ভেরিয়েবল নামের প্রয়োজন তবে প্রোগ্রাম লজিকের প্রয়োজন নেই, উদাহরণস্বরূপ যখন আমাদের কেবলমাত্র উপাদানটির মান প্রয়োজন হয় তখন অযাচিত লুপ সূচকটি বাতিল করতে হয় না।

থেকে সারাংশ:

গো প্রোগ্রামিং ভাষা (অ্যাডিসন-ওয়েসলি পেশাদার কম্পিউটিং সিরিজ)

ব্রায়ান ডাব্লু কার্নিগান

এই উপাদান কপিরাইট দ্বারা সুরক্ষিত হতে পারে।


2

একে ফাঁকা শনাক্তকারী বলা হয় এবং এটি এমন ক্ষেত্রে সহায়তা করে যেখানে আপনি যে মানটি প্রত্যাবর্তন করতে চলেছেন এবং এটি উল্লেখ না করে তা বাতিল করতে চান

কিছু জায়গা যেখানে আমরা এটি ব্যবহার করি:

  • একটি ফাংশন একটি মান দেয় এবং আপনি ভবিষ্যতে এটি ব্যবহার করার ইচ্ছা করেন না
  • আপনি পুনরাবৃত্তি করতে চান এবং এমন একটি আই মান দরকার যা আপনি ব্যবহার করবেন না

2

অব্যবহৃত ভেরিয়েবলের দুর্দান্ত ব্যবহারের পরিস্থিতিটি তখন আপনার যখন কেবলমাত্র একটি আংশিক আউটপুট প্রয়োজন। নীচের উদাহরণে আমাদের কেবল মান (রাষ্ট্রের জনসংখ্যা) মুদ্রণ করতে হবে।

package main
import (
    "fmt"
)
func main() {
          statePopulations := map[string]int{
          "California": 39250017,
          "Texas":      27862596,
          "Florida":    20612439,
          }
          for _, v := range statePopulations {
          fmt.Println(v)
    }
}

1

মূলত, _,খালি শনাক্তকারী হিসাবে পরিচিত। জিওতে আমাদের এমন ভেরিয়েবল থাকতে পারে না যা ব্যবহার হচ্ছে না।

উদাহরণস্বরূপ যখন আপনি কোনও অ্যারের মাধ্যমে পুনরাবৃত্তি করেন যদি আপনি মান: = ব্যাপ্তি ব্যবহার করেন তবে আপনি i চান না পুনরাবৃত্তির জন্য মান । তবে আপনি যদি i মানটি বাদ দেন তবে এটি একটি ত্রুটি ফিরে আসবে। তবে আপনি যদি i ঘোষণা করে থাকেন এবং এটি ব্যবহার না করেন তবে এটি ত্রুটিও ফিরে আসবে।

সুতরাং, এটি সেই জায়গা যেখানে আমাদের ব্যবহার করতে হবে _,

এছাড়াও আপনি যখন ভবিষ্যতে কোনও ফাংশনের রিটার্ন মান না চান তা ব্যবহার করা হয়।


0

গোলাঙে একটি অব্যবহৃত ভেরিয়েবল অনুমোদিত নয়

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

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