এর চেয়ে বেশি সংক্ষিপ্ত উপায় নেই, আপনি যা করেছেন তা হ'ল "সঠিক" উপায়; কারণ স্লাইসগুলি সর্বদা এক-মাত্রিক হয় তবে এটি উচ্চতর মাত্রিক অবজেক্টগুলি তৈরির জন্য তৈরি হতে পারে। আরও বিশদের জন্য এই প্রশ্নটি দেখুন: যান: দ্বিমাত্রিক অ্যারের স্মৃতি উপস্থাপনাটি কীভাবে হয় ।
আপনি এটির একটি জিনিস সহজ করতে পারেন তা হল নির্মাণটি ব্যবহার করা for range
:
a := make([][]uint8, dy)
for i := range a {
a[i] = make([]uint8, dx)
}
আরও মনে রাখবেন যে আপনি যদি আপনার স্লাইসটি একটি যৌগিক আক্ষরিক দিয়ে শুরু করেন তবে আপনি এটি "ফ্রি" এর জন্য পাবেন, উদাহরণস্বরূপ:
a := [][]uint8{
{0, 1, 2, 3},
{4, 5, 6, 7},
}
fmt.Println(a)
হ্যাঁ, এর সীমা রয়েছে যেমন আপাতদৃষ্টিতে আপনাকে সমস্ত উপাদানগুলি গণনা করতে হবে; তবে কিছু কৌশল আছে, আপনাকে সমস্ত মান গণনা করতে হবে না, কেবল স্লাইসের উপাদান ধরণের শূন্য মান নয় । এটি সম্পর্কে আরও তথ্যের জন্য গোলং অ্যারে প্রারম্ভিককরণের মূলযুক্ত আইটেমগুলি দেখুন ।
উদাহরণস্বরূপ, যদি আপনি এমন একটি স্লাইস চান যেখানে প্রথম 10 উপাদানগুলি শূন্য হয়, এবং তারপরে অনুসরণ করে 1
এবং 2
, এটি এটি তৈরি করা যেতে পারে:
b := []uint{10: 1, 2}
fmt.Println(b)
আরও মনে রাখবেন যে আপনি যদি টুকরোগুলির পরিবর্তে অ্যারে ব্যবহার করেন তবে এটি খুব সহজেই তৈরি করা যেতে পারে:
c := [5][5]uint8{}
fmt.Println(c)
আউটপুট হল:
[[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]
অ্যারেগুলির ক্ষেত্রে আপনাকে "বহিরাগত" অ্যারেতে পুনরাবৃত্তি করতে হবে না এবং "অভ্যন্তরীণ" অ্যারেগুলি আরম্ভ করতে হবে না কারণ অ্যারে বর্ণনাকারী নয় তবে মান রয়েছে। ব্লগ পোস্ট অ্যারে, স্লাইস (এবং স্ট্রিং) দেখুন: আরও তথ্যের জন্য 'অ্যাপেন্ড' এর মেকানিক্স ।
গো খেলার মাঠে উদাহরণগুলি ব্যবহার করে দেখুন ।
cannot use [5][2]string literal (type [5][2]string) as type [][]string in field value
যখন আমি বললাম কি বললে আমি যেতে বলছি একটি ফালি হয় অ্যারের দায়িত্ব অর্পণ করা চেষ্টা করুন।