প্রথমে কিছু ব্যাকগ্রাউন্ড। গো এর আনুষ্ঠানিক ব্যাকরণটি ";"
অনেকগুলি প্রযোজনায় টার্মিনেটর হিসাবে সেমিকোলন ব্যবহার করে , তবে গো প্রোগ্রামগুলি তাদের বেশিরভাগ বাদ দিতে পারে (এবং তাদের একটি পরিষ্কার, সহজেই পঠনযোগ্য উত্স থাকা উচিত; gofmt
এছাড়াও অপ্রয়োজনীয় সেমিকোলনগুলি সরিয়ে দেয়)।
স্পেসিফিকেশন সঠিক নিয়ম তালিকাভুক্ত। স্পেস: সেমিকোলন:
আনুষ্ঠানিক ব্যাকরণে সেমিকোলন ব্যবহার করা হয় ";" বেশ কয়েকটি প্রোডাকশনে টার্মিনেটর হিসাবে। গো প্রোগ্রামগুলি নিম্নলিখিত দুটি নিয়ম ব্যবহার করে এই সেমিকোলনগুলির বেশিরভাগ বাদ দিতে পারে:
ইনপুটটি টোকেনগুলিতে বিভক্ত হয়ে গেলে, একটি টেকনটি যদি লাইনটির চূড়ান্ত টোকেনের সাথে সাথেই সেমিকোলনটি স্বয়ংক্রিয়ভাবে টোকেন প্রবাহে প্রবেশ করা হয় if
জটিল বিবৃতিগুলিকে একটি একক লাইন দখল করতে অনুমতি দেওয়ার জন্য, একটি বন্ধ "" "" "" বা "}" এর আগে একটি সেমিকোলন বাদ দেওয়া যেতে পারে।
সুতরাং আপনি দেখতে পাচ্ছেন যে আপনি প্রথম বন্ধনীটির পরে কোনও নতুন লাইন অক্ষর সন্নিবেশ করানো হলে )
, একটি সেমিকোলন ;
স্বয়ংক্রিয়ভাবে সন্নিবেশ করা হবে এবং সুতরাং পরবর্তী লাইনটি পূর্ববর্তী লাইনের ধারাবাহিকতা হিসাবে বিবেচিত হবে না। আপনার ক্ষেত্রে এটি ঘটেছে, এবং এরপরে শুরু হওয়া পরবর্তী লাইনটি .Scan(&ReadUser.ID,...
আপনাকে একটি সংকলন-সময় ত্রুটি দেয় কারণ এটি নিজেই দাঁড়িয়ে থাকা (পূর্ববর্তী লাইনটি ছাড়াই) একটি সংকলন-সময় ত্রুটি:syntax error: unexpected .
সুতরাং আপনি যে কোনও সময়ে আপনার লাইনটি ভেঙে ফেলতে পারেন যা 1.
উপরের পয়েন্টের নীচে তালিকাভুক্ত বিধিগুলির সাথে বিরোধ নয় conflict
সাধারণত আপনি কমা পরে আপনার লাইন ভাঙ্গতে পারে ,
পর উদ্বোধনী প্রথম বন্ধনী যেমন (
, [
, {
, এবং একটি ডট পর .
যা একটি ক্ষেত্র অথবা কিছু মান পদ্ধতি উল্লেখ করা যেতে পারে। আপনি বাইনারি অপারেটরগুলির পরে আপনার লাইনটিও ভেঙে ফেলতে পারেন (যাদের জন্য 2 অপারেন্ড প্রয়োজন) যেমন:
i := 1 +
2
fmt.Println(i)
এখানে লক্ষণীয় একটি বিষয় হ'ল যদি আপনার কাছে স্ট্রাকচার বা স্লাইস বা মানচিত্রের শাব্দিক প্রাথমিক মানগুলির তালিকা থাকে এবং আপনি সর্বশেষ মান তালিকাভুক্ত করার পরে লাইনটি ভাঙতে চান তবে আপনাকে একটি বাধ্যতামূলক কমা রাখতে হবে ,
যদিও এটি সর্বশেষ মান এবং না আরও অনুসরণ করবে, যেমন:
s := []int {
1, 2, 3,
4, 5, 6,
}
এটি সেমিকোলন নিয়মের সাথে সামঞ্জস্য করার জন্য, এবং এটিও যাতে আপনি চূড়ান্ত কমা যুক্ত / অপসারণের যত্ন না নিয়েই নতুন লাইনগুলি পুনরায় সাজানো এবং যুক্ত করতে পারেন; উদাহরণস্বরূপ, আপনি সরানো এবং একটি নতুন কমা যোগ না করেই কেবল 2 টি লাইন অদলবদল করতে পারেন:
s := []int {
4, 5, 6,
1, 2, 3,
}
একটি ফাংশন কলের আর্গুমেন্ট তালিকা করার সময় একই প্রযোজ্য:
fmt.Println("first",
"second",
"third",
)