DEV Community

Cover image for My GO init()
Shoibur Rahman Khan Sifat
Shoibur Rahman Khan Sifat

Posted on

My GO init()

আমি গত ৪ বছর যাবৎ মোবাইল অ্যাপ ডেভেলপমেন্টের সাথে আছি। কিন্তু রিসেন্ট সময়ে আমার ইচ্ছা হচ্ছে ব্যাকেন্ড ডেভেলপমেন্ট শিখব। আর তার থেকে বড় ব্যাপার হলো, আমি ইঞ্জিনিয়ারিং এর স্বাদ টা নিতে চাচ্ছিলাম। কোনটা শেখা যায় রিসার্চ করার পর, ডিসিশন নিলাম GO শিখি। আর বাংলায় বর্তমানে GO শেখার সবচেয়ে ভালো রিসোর্স হবে হাবিব ভাইয়ের YouTube playlist-
Golang Backend Development (Beginner Friendly)

আমি এখন পর্যন্ত মনে করি পেইড কোর্স করেও হয়তো আপনি ততটা বুঝবেন না যতটা এই playlist দেখে বুঝবেন বা শিখবেন। আমি তার এই playlist দেখে শুধু GO শেখা নয় বরং কম্পিউটার ইঞ্জিনিয়ারিং এর আসল স্বাদ পেয়েছি।

আমি হাবিব ভাইয়ের ভিডিও দেখে এবং Golang documentation পড়ে যা বুঝব তাই লিখব। লেখাগুলো আমার শেখার জন্যই লিখব শুধু। কারণ আমার ক্ষেত্রে আমি যা পড়ি বা শিখি সেগুলো কোথাও শেয়ার করলে আমি ভালো শিখতে পারি বা মনে রাখতে পারি। কারণ কোথাও শেয়ার করতে চাইলে সেটা সম্পর্কে আরও ডিপে গিয়ে শেখার প্রবণতা থাকে আমার, যার কারণে আমি আরও বেশি শিখতে পারি, আর সেটা গুছানো আকারে থাকে।

যারা পড়ার চেয়ে ভিডিও দেখতে পছন্দ করেন :
My GO init() || GO journey

Package

সবকিছুরই কিন্তু একটা শুরু থাকে। তেমনই যেকোনো প্রোগ্রামেরও শুরু আছে। GO এর ক্ষেত্রে যেমন main function

package main

import (
 "fmt"
 "math/rand"
)

func main() {
 fmt.Println("My favorite number is", rand.Intn(10))
}
Enter fullscreen mode Exit fullscreen mode

এই main function থেকেই যেকোনো GO প্রোগ্রামের execution শুরু হয়। তবে এখানে যদি init function থাকে তাইলে কিন্তু init function আগে execute হবে, তারপর main function execute হবে। init function থাকতেও পারে নাও পারে, কিন্তু main function কিন্তু থাকতেই হবে।

এখন এই যে main function, এর সাথে আরেকটা টার্ম চলে আসে “Package”। প্রতিটা GO প্রোগ্রাম হলো একেকটা package । এখানে যে main function আছে এটাও একটা package, সেটা হলো main package।

Import

আচ্ছা এখানে যে import করলাম কিছু জিনিস, সেগুলো কি? GO এর নিজস্ব একটা প্যাকেজ লাইব্রেরি আছে, সেখান থেকে আমাদের প্রয়োজন মতো প্যাকেজ import করে ইউজ করতে পারি। এখানে যেমন, প্রথমে “fmt” import করা হয়েছে। fmt প্যাকেজ আমাদেরকে input or output formatting করার জন্য function provide করে। এখানে আরও একটা প্যাকেজ ইমপোর্ট করা হয়েছে “math/rand”। math প্যাকেজ হলো বিশাল, এই প্যাকেজে math রিলেটেড অনেক ফাঙ্কশনালিটি আমাদের প্রোভাইড করে। তাই পুরো প্যাকেজ ইমপোর্ট না করে জাস্ট যেইটুক দরকার সেটুক ইমপোর্ট করা হয়েছে।

আরেকটা ব্যপার হলো, এখানে গ্রুপ করে ইমপোর্ট করা হয়েছে, চাইলে কিন্তু আলাদা আলাদা ইমপোর্ট করা যায়,

import "fmt"
import "math/rand"
Enter fullscreen mode Exit fullscreen mode

Exported Name

func main() {
 fmt.Println("My favorite number is", rand.Intn(10))
}
Enter fullscreen mode Exit fullscreen mode

আমরা যদি এই function এর দিকে তাকাই, এখানে fmt প্যাকেজের Println function এবং rand প্যাকেজের Intn function ইউজ হইতেছে। এখানে GO এর একটা naming convention রুলস আছে। যখন কোনও function অন্য কোথাও এক্সপোর্ট করার জন্য বানানো হবে, তখন function এর নামের প্রথম লেটার upper case এ লিখতে হবে ।

আজকের লেখা টা ছিলো, GO এর init function এর মতো। এরপর থেকে শুরু হবে main function ইন শা আল্লাহ।

Top comments (0)