[১.২] সিন্ট্যাক্স (Syntax)

[১.২.১] প্রোগ্রাম স্ট্রাকচার

একটু আগেই আমরা দেখলাম কিভাবে Go তে একটি প্রোগ্রাম রান করতে হয়। এবারে আমরা জানব Go ফাইলের গঠন সম্পর্কে।

একটি Go ফাইল সাধারনত নিম্নলিখিত অংশগুলো  নিয়ে গঠিত – 

  • প্যাকেজ ডিক্লেয়ারেশন
  • প্যাকেজ ইমপোর্ট 
  • ফাংশন
  • স্টেটমেন্ট এবং এক্সপ্রেশন

 

আরও ভালভাবে বুঝতে একটু আগেই যে কোডটি আমরা রান করেছি সেটি আবার লক্ষ্য করি –

				
					 package main
 
   import "fmt"
   
   func main() {
       fmt.Println("Hello, World!")
   }

				
			

প্রোগ্রামটির বিভিন্ন অংশ গুলো সম্পর্কে এখন জেনে নেই –

  • প্রত্যেকটি Go ফাইলই কোনো না কোনো প্যাকেজের মধ্যে থাকে। আমাদের কোডে প্রোগ্রামের প্রথম লাইনটি “package main” মূলত একটা প্যাকেজের নামকে সংজ্ঞায়িত করে যেখানে ঐ ফাইলটি থাকবে। মেইন প্যাকেজে সর্বদা একটি main() ফাংশন থাকে যা প্রোগ্রামের এন্ট্রি পয়েন্ট। তাই এটা একটি বাধ্যতামূলক স্টেটমেন্ট। এই স্টেটমেন্ট ছাড়া, Go কম্পাইলার জানবে না কোথা থেকে কোড চালানো শুরু করতে হবে।
  • পরবর্তী লাইন import “fmt” , Go কম্পাইলারকে প্যাকেজ fmt-এ থাকা ফাইলগুলোকে অন্তর্ভুক্ত করতে বলে। প্রয়োজনীয় যেকোনো প্যাকেজ এই সেকশনে ইমপোর্ট করা যাবে।
  • পরবর্তী লাইন func main() হল প্রধান ফাংশন যেখান থেকে প্রোগ্রাম এক্সিকিউশন শুরু হয়।
  • পরবর্তী লাইন Println() হল “fmt” প্যাকেজের অধীনে একটি ফাংশন যার দ্বারা  “Hello, World!” কনসোলে প্রিন্ট হবে।

[১.২.২] টোকেন (Token)

একটি প্রোগ্রাম বিভিন্ন টোকেন নিয়ে গঠিত। প্রোগ্রামে identifier, keyword, constant, string কিংবা symbol, সবকিছুই এক একটি টোকেন । নিচের Go কোডটি ছয়টি টোকেন নিয়ে গঠিত – 

				
					fmt.Println("Hello world!")
				
			

টোকেন ছয়টি হল – 

				
					 fmt         -------->token1
   .           -------->token2
   Println     -------->token3
   (           -------->token4
   "Hello world!" ----->token5
   )           -------->token6

				
			

[১.২.৩] লাইন ব্রেক (line break)

Go-তে একটি line Break একটি statement এর সমাপ্তি নির্দেশ করে। কোডের দুটি লাইন, কম্পাইলার দ্বারা দুটি পৃথক statement  হিসাবে বিবেচিত হয়।

উদাহরণ –

				
					package main

import "fmt"

func main() {
   fmt.Println("Hello World!");
   fmt.Println("I'm learning Go")
}
				
			

[১.২.৪] কমেন্টস (comments)

comment হল একটি টেক্সট যা এক্সিকিউশন এর সময় Go উপেক্ষা করে যায়। কোডের উদ্দেশ্য সহজে বুঝতে এবং কোডকে ব্যাখ্যা করতে comment ব্যবহার করা হয়। Go এক বা একাধিক লাইনের comment সাপোর্ট করে । 

  • এক লাইনের ক্ষেত্রে comment দুটি ফরোয়ার্ড স্ল্যাশ (//) দিয়ে শুরু হয়।
  • দুটি ফরোয়ার্ড স্ল্যাশ (//) থেকে লাইনের শেষ পর্যন্ত টেক্সটগুলো কম্পাইলার উপেক্ষা করে যায়।

 

উদাহরণ –  

				
					 // This is a comment
   package main
   
   import (
       "fmt"
   )
   
   func main() {
       // This is a comment
       fmt.Println("Hello World!")
   }

				
			

নিচের উদাহরণে একটি কোড লাইনের শেষে একটি সিঙ্গেল লাইন comment ব্যবহার করা হয়েছে –

				
					
   // This is a comment
   package main
   
   import (
       "fmt"
   )
   
   func main() {
       fmt.Println("Hello World!") // This is a comment
   }

				
			

একাধিক লাইনের comment “/*” দিয়ে শুরু হয় এবং “*/” দিয়ে শেষ হয়। উদাহরণ – 

				
					package main

   import (
       "fmt"
   )
   
   func main() {
       /* The code below will print Hello World
       to the screen, and it is amazing */
       fmt.Println("Hello World!")
   }

				
			

[১.২.৫] আইডেন্টিফাইয়ার (identifiers)

একজন প্রোগ্রামার, প্রোগ্রামের উপাদানগুলোকে যে নামে সংজ্ঞায়িত করে তাই হলো identifier। কোডের প্রত্যেকটা উপাদানকে চিহ্নিত করতে, ভ্যারিয়েবল,  ফাংশন, প্যাকেজ ইত্যাদির নাম দিতে identifiers ব্যবহৃত হয়।

identifiers লিখার নিয়ম : 

  • identifiers এর নাম অবশ্যই একটি লেটার দ্বারা শুরু হবে অথবা একটি আন্ডারস্কোর(_) হবে। 
  • identifiers এর নাম ডিজিট দ্বারা শুরু হতে পারবে না ।
  • identifiers এর নাম কেস সেনসিটিভ (এর মানে হল যে বড় হাতের এবং ছোট হাতের অক্ষরগুলোকে আলাদা অক্ষর হিসাবে বিবেচনা করা হয়। উদাহরণস্বরূপ, “Apple” এবং “apple” শব্দ দুটি ভিন্ন শব্দ হিসাবে বিবেচিত হবে)।
  • identifiers এর নাম হিসেবে Go এর কোনো কি-ওয়ার্ড ব্যবহার করা যাবে না।
  • identifiers এর নামের দৈর্ঘ্যের কোন সীমাবদ্ধতা নেই।

 

উদাহরণ –

				
					 // ভ্যালিড identifiers:
   _vivasoft123
   vivasoft
   vivasoft123abc
   Vivasoft
   vivaSoft
   viva_soft

   // ইনভ্যালিড identifiers:
   212vivasoft
   if
   else
   int

				
			

[১.২.৬] কি-ওয়ার্ড (keyword)

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

Go এর কিছু কি-ওয়ার্ড নিচে দেওয়া হল –

				
					break     default      func    interface  select
case      defer        go      map        struct
chan      else         goto    package    switch
const     fallthrough  if      range      type
continue  for          import  return     var