যদিও টাইটেল দিয়েছি the beginning, আসলে এটা কিন্তু একেবারে বিগিনারদের জন্য না। বিগিনিং লেভেলে go build hello.go বা go run hello.go দিয়ে শুরু করা যেতে পারে।
গো ওয়ার্কস্পেস হচ্ছে আপনি যেখানে আপনার কোডবেজ তৈরি করবেন তার জন্য ডিরেক্টরি স্ট্রাকচারের একটা কনভেনশন। অর্থাৎ মুল কোড কোন ডিরেক্টরিতে থাকবে, কোড কম্পাইল করার পর বাইনারি ফাইলটা কোথায় থাকবে, প্যাকেজ ফাইলগুলো কোন ডিরেক্টরিতে থাকবে তার একটা স্ট্যান্ডার্ড/ কনভেনশন। ব্যাপারটা এমন না যে এই স্ট্রাকচার ফলো না করলে আপনার কোড কাজ করবে না। যেকোন ল্যাংগুয়েজের জন্য কনভেনশন সেট করা হয় কোডকে যেন সহজে মেইন্টেইন করা যায়। তাই সেটা ফলো করাটা বেস্ট প্র্যাকটিস।
আমি ধরে নিচ্ছি আপনার মেশিনে গো ইন্সটল করা আছে, না করা থাকলে গো ইন্সটল করে নিন, তারপর পরবর্তি স্টেপ গুলো ফলো করে আমরা একটি হ্যালো ওয়ার্ল্ড প্রোগ্রাম ডিরেক্টরি স্ট্রাকচারসহ কম্পাইল এবং বিল্ড করব ।
উপরের ছবিতে তিনটা টপ লেভেলের ডিরেক্টরি দেখা যাচ্ছে bin, pkg, src নামে। যা একদম রুট ডিরেক্টরিতে থাকবে। এখানে bin ডিরেক্টরি হচ্ছে যেখানে ফাইল কম্পাইল করার পর যে বাইনারি ফাইলগুলো ক্রিয়েট হবে সেই ফাইলগুলো থাকবে। pkg হচ্ছে প্যাকেজ ডিরেক্টরি, যেখানে বিভিন্ন রিমোট প্যাকেজ বা আপনার নিজের তৈরি করা প্যাকেজ সমূহ থাকবে। আর src ডিরেক্টরি হচ্ছে যেখানে আপনি কাজ করবেন অর্থাৎ আপনার সব কোড বা গো ফাইলগুলো থাকবে।
প্রথমে একটি gotest বা আপনার ইচ্ছেমত একটা নাম দিয়ে ডিরেক্টরি ক্রিয়েট করুন।
$ mkdir gotest
তারপর gotest ডিরেক্টরিতে গিয়ে src নামে একটা ডিরেক্টরি ক্রিয়েট করুন।
$ cd gotest
$ mkdir src
src (সোর্স) ডিরেক্টরির মাঝে গিটহাব বা বিটবাকেটের আপনার ইউজারনেম এবং রেপো নেম দিয়ে একটা ডিরেক্টরি ক্রিয়েট করে করুন এটা মূলত গিট এর রেপোজিটরি হবে এবং এখানে আপনার প্রোজেক্টের নাম দিয়ে একটা ডিরেক্টরি ক্রিয়েট করতে হবে যার মাঝে আপনার কোডের ফাইলগুলো থাকবে। আমি প্রোজেক্টের নাম দিচ্ছি ‘হ্যালো’ এবং হ্যালো ডিরেক্টরির মাঝখানে hello.go নামে একটি ফাইল ক্রিয়েট করেছি। নিচের কমান্ডগুলো রান করুন।
$ cd src
$ mkdir -p github.com/monirz/hello
$ cd github.com/monirz/hello
$ mkdir hello
$ touch hello.go
এখন আপনার পছন্দের এডিটর দিয়ে hello.go ফাইলটা ওপেন করুন। আমি ব্যক্তিগতভাবে Atom এডিটর ব্যাবহার করছি go-plus নামে একটা প্লাগিন দিয়ে, বেশ ভাল। দ্রুত এডিট করার জন্য Vim ব্যবহার করি go-code নামে একটা প্লাগিন সহ।
package main
import ( “fmt” )
func main() { fmt.Println(“Hello World!”) } এই পর্যায়ে আমাদের কোডটাকে বিল্ড করার আগে GOPATH এ gotest ডিরেক্টরি সেট করে নিই।
$ export GOPATH=$HOME/gotest
এখন নিচের কমান্ডটি রান করুন
$ go install
যদি কোন এরর না দেখায়, তাহলে hello নামে একটা বাইনারি ফাইল ক্রিয়েট তৈরি হয়েছে।
ইয়েই… ইউ হ্যাভ ডান ইট।
কিন্তু কারেন্ট ডিরেক্টরিতে ls
কমান্ডটি রান করে দেখুন আসলে কোন hello নামে কোন বাইনারি ফাইল নেই, তাহলে ফাইলটা গেল কোথায় (?)।
সবকিছু ঠিকঠাক থাকলে অর্থাৎ যদি গোপাথ ভেরিয়েবল ঠিকমত সেট করা হয়ে থাকে তাহলে go install কমান্ডটা রান করালে পাথ ভেরিএবলে যে ডিরেক্টরির নাম দেয়া হয়েছে সেই ডিরেক্টরির মাঝে গো bin নামে একটা ডিরেক্টরি তৈরি করে এবং bin ডিরেক্টরিতে আপনার দেয়া প্রোজেক্টের নামে একটা বাইনারি ফাইল তৈরি করে। এখন gotest ডিরেক্টরিতে ls
করে দেখুন সেখানে bin নামে একটা ডিরেক্টরি ক্রিয়েট হয়েছে। সেখান থেকে ফাইলটাকে রান করুন।
$ cd gotest
$ ls
$ cd bin
$ hello
সব কিছু ঠিক থাকলে আউটপুট Hello World! দেখাবে।
voila!
তবে bin ডিরেক্টরিকে সিস্টেম পাথে এক্সপোর্ট করে নেওয়াটা বেটার, সেক্ষেত্রে আপনি যেকোন যায়গা থেকে আপনার প্রোগ্রামটাকে রান করাতে পারবেন। এটা অবশ্য যারা ইউনিক্স বা লিনাক্স ব্যবহার করেন তাদের জানার কথা।
$ export PATH=$HOME/gocode/bin:$PATH
এখন চাইলে আপানার টার্মিনালে যে কোন ডিরেক্টরি থেকে hello কমান্ডটা রান করাতে পারবেন।
Share this post
Twitter
Facebook
LinkedIn
Pinterest