Go-তে একটি string হলো বাইটের একটি অপরিবর্তনীয় ক্রম, যা অগত্যা অক্ষর প্রকাশ করতেই হবে এমন নয়।
একটি স্ট্রিং লিটারাল ডাবল কোটেশনের মধ্যে সংজ্ঞায়িত করা হয়:
const name = "Jane"
+ অপারেটর দিয়ে স্ট্রিংগুলোকে সংযুক্ত করা যায়:
"Jane" + " " + "Austen"
// => "Jane Austen"
কিছু বিশেষ অক্ষরকে একটি অগ্রগামী ব্যাকস্ল্যাশ দিয়ে এস্কেপ করতে হয়, যেমন স্ট্রিংয়ে ট্যাবের জন্য \t এবং নতুন লাইনের জন্য \n।
"How is the weather today?\nIt's sunny"
// =>
// How is the weather today?
// It's sunny
strings প্যাকেজটিতে স্ট্রিং নিয়ে কাজ করার জন্য অনেক দরকারী ফাংশন রয়েছে।
স্ট্রিং ফাংশন সম্পর্কে আরও তথ্যের জন্য, strings প্যাকেজ ডকুমেন্টেশন দেখুন।
এখানে কিছু উদাহরণ দেওয়া হলো:
import "strings"
// strings.ToLower returns the string given as argument with all its characters lowercased
strings.ToLower("MaKEmeLoweRCase")
// => "makemelowercase"
// strings.Repeat returns a string with a substring given as argument repeated many times
strings.Repeat("Go", 3)
// => "GoGoGo"
কাছেই "Tech Palace" নামে একটি গৃহস্থালি যন্ত্রপাতির দোকান আছে। দোকানের মালিক সম্প্রতি বড় একটি ডিসপ্লে বসিয়েছেন, যা মার্কেটিং বার্তা দেখাতে এবং গ্রাহকরা প্রবেশপথে তাঁদের লয়্যালটি কার্ড স্ক্যান করলে একটি বিশেষ স্বাগতম বার্তা দেখাতে ব্যবহার করা হবে। ডিসপ্লেটিতে ছোট ছোট অনেক LED লাইট থাকে এবং এটি একাধিক লাইন লেখা দেখাতে পারে।
নতুন ডিসপ্লের জন্য লেখা তৈরি করতে যে কোডটি ব্যবহার করা হয়, সেই কোডে দোকানের মালিকের আপনার সাহায্য দরকার।
বেশিরভাগ গ্রাহক যাঁরা তাঁদের লয়্যালটি কার্ড স্ক্যান করেন, তাঁদের জন্য দোকানের মালিক ডিসপ্লেতে "Welcome to the Tech Palace," লেখাটি এবং তার পর গ্রাহকের নাম বড় হাতের অক্ষরে দেখতে চান।
WelcomeMessage ফাংশনটি ইমপ্লিমেন্ট করুন, যা string আর্গুমেন্ট হিসেবে গ্রাহকের নাম গ্রহণ করে এবং কাঙ্ক্ষিত বার্তাটি string হিসেবে রিটার্ন করে।
WelcomeMessage("Judy")
// => Welcome to the Tech Palace, JUDY
যেসব অনুগত গ্রাহক দোকান থেকে অনেক কেনাকাটা করেন, তাঁদের জন্য মালিক স্বাগতম বার্তার আগে ও পরে এক লাইন তারা যোগ করে স্বাগতম ডিসপ্লেটি আরও চমৎকার করতে চান। লাইনে কতগুলো তারা থাকবে তা অবশ্য তাঁরা এখনও নিশ্চিত নন, তাই সেটি কনফিগারযোগ্য রাখতে চান।
AddBorder নামে একটি ফাংশন লিখুন, যা আর্গুমেন্ট হিসেবে একটি স্বাগতম বার্তা (string) এবং প্রতি লাইনে তারার সংখ্যা (int টাইপ) গ্রহণ করে।
এটি এমন একটি string রিটার্ন করবে যাতে ৩টি লাইন থাকে: প্রথমে কাঙ্ক্ষিত সংখ্যক তারা নিয়ে একটি লাইন, তারপর যে স্বাগতম বার্তাটি ইনপুট হিসেবে দেওয়া হয়েছিল সেটি, তারপর আবার তারার একটি লাইন।
AddBorder("Welcome!", 10)
এটি নিম্নলিখিত ফলাফল রিটার্ন করবে:
**********
Welcome!
**********
এই নতুন ডিসপ্লে বসানোর আগে দোকানে একই রকমের একটি ডিসপ্লে ছিল, যা কেবল কনফিগার করা যায় না এমন স্থির লাইন দেখাতে পারত। মালিক পুরোনো মার্কেটিং বার্তাগুলোর কিছু নতুন ডিসপ্লেতে আবার ব্যবহার করতে চান। তবে সেই ডেটার মধ্যে আগে থেকেই তারার বর্ডার এবং কিছু অনাকাঙ্ক্ষিত হোয়াইটস্পেস রয়েছে। আপনার কাজ হলো বার্তাগুলো পরিষ্কার করা, যাতে সেগুলো আবার ব্যবহার করা যায়।
CleanUpMessage নামে একটি ফাংশন ইমপ্লিমেন্ট করুন, যা পুরোনো মার্কেটিং বার্তাটি একটি স্ট্রিং হিসেবে গ্রহণ করে।
ফাংশনটি প্রথমে টেক্সট থেকে সব তারা মুছে ফেলবে এবং তারপর বাকি টেক্সটের শুরু ও শেষের হোয়াইটস্পেসগুলো মুছে ফেলবে।
এরপর ফাংশনটি পরিষ্কার করা বার্তাটি রিটার্ন করবে।
message := `
**************************
* BUY NOW, SAVE 10% *
**************************
`
CleanUpMessage(message)
// => BUY NOW, SAVE 10%
Exercism-এ সাইন আপ করুন, Go ট্র্যাকের 34টি কনসেপ্ট165টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।