গো ভাষায়,
[]string
একটি স্ট্রিং অ্যারে
এবং আমরা ...string
প্যারামিটার হিসাবেও ব্যবহার করি ।
পার্থক্য কি?
ফাংশন সংজ্ঞা:
func f(args ...string) {}
আমি কি এই ফাংশনটি নীচের মতো কল করতে পারি?
args := []string{"a", "b"}
f(args)
গো ভাষায়,
[]string
একটি স্ট্রিং অ্যারে
এবং আমরা ...string
প্যারামিটার হিসাবেও ব্যবহার করি ।
পার্থক্য কি?
ফাংশন সংজ্ঞা:
func f(args ...string) {}
আমি কি এই ফাংশনটি নীচের মতো কল করতে পারি?
args := []string{"a", "b"}
f(args)
উত্তর:
[]string
একটি স্ট্রিং অ্যারে
প্রযুক্তিগতভাবে এটি একটি স্লাইস যা অন্তর্নিহিত অ্যারের উল্লেখ করে
এবং আমরা
...string
প্যারামিটার হিসাবেও ব্যবহার করি ।পার্থক্য কি?
কাঠামোর প্রতি শ্রদ্ধা সহ, কিছুই আসলে। উভয় সিনট্যাক্সের ফলে প্রাপ্ত ডেটা টাইপ একই।
...
পরামিতি সিনট্যাক্স একটি variadic প্যারামিটার করে তোলে। এটি শূন্য বা আরও বেশি string
আর্গুমেন্ট গ্রহণ করবে এবং এগুলিকে স্লাইস হিসাবে উল্লেখ করবে।
কলিংয়ের প্রতি শ্রদ্ধার সাথে f
আপনি নীচের সিনট্যাক্সের সাহায্যে স্ট্রাইজের একটি টুকরোটি বৈকল্পিক প্যারামিটারে পাস করতে পারেন:
func f(args ...string) {
fmt.Println(len(args))
}
args := []string{"a", "b"}
f(args...)
এই সিনট্যাক্সটি আক্ষরিক সিনট্যাক্স ব্যবহার করে নির্মিত স্লাইস, বা ভ্যারিয়্যাডিক প্যারামিটারের প্রতিনিধিত্বকারী স্লাইসের জন্য উপলব্ধ (যেহেতু তাদের মধ্যে আসলে কোনও পার্থক্য নেই) ।
[]string
বাক্য গঠন ব্যবহার করে তৈরি করা প্রশ্নের উত্তর দিচ্ছে । এটি পরিষ্কার করার জন্য আমি আমার উত্তরে আরও উদ্ধৃতি যুক্ত করব। :-)
উভয়ই স্ট্রিংগুলির একটি অ্যারে তৈরি করে তবে পার্থক্য কীভাবে এটি বলা হয় তার মধ্যে।
func f(args ...string) {
}
// Would be called like this:
f("foo","bar","baz");
এটি আপনাকে একটি পরিবর্তনশীল সংখ্যক আর্গুমেন্ট গ্রহণ করতে দেয় (একই ধরণের সমস্ত)
এর একটি দুর্দান্ত উদাহরণ হ'ল fmt.Print
এবং বন্ধুরা, যা আপনি চান যত কম বা তত বেশি যুক্তি গ্রহণ করতে পারে।
def fn(*args)
নির্মাণের সাথে এটি প্রায় অভিন্ন ।
আপনি যা চান তা এখানে:
var args []string = []string{"A", "B", "C"}
func Sample(args ...string) {
for _, arg := range args {
fmt.Println(arg)
}
}
func main() {
Sample(args...)
}
এটি আপনার ফাংশন পরামিতিগুলি সহজ করে। এখানে একটি উদাহরণ ( https://play.golang.org/p/euMuy6IvaM ): পদ্ধতি SampleEllipsis শূন্য থেকে একই ধরণের অনেক পরামিতি কিন্তু পদ্ধতি SampleArray এটা বাধ্যতামূলক গ্রহণ args ঘোষিত হবে।
package main
import "fmt"
func SampleEllipsis(args ...string) {
fmt.Printf("Sample ellipsis : %+v\n",args)
}
func SampleArray(args []string) {
fmt.Println("Sample array ")
SampleEllipsis(args...)
}
func main() {
// Method one
SampleEllipsis([]string{"A", "B", "C"}...)
// Method two
SampleEllipsis("A", "B", "C")
// Method three
SampleEllipsis()
// Simple array
SampleArray([]string{"A", "B", "C"})
// Simple array
SampleArray([]string{})
}
রিটার্নস:
Sample ellipsis : [A B C]
Sample ellipsis : [A B C]
Sample ellipsis : []
Sample array
Sample ellipsis : [A B C]
Sample array
Sample ellipsis : []
[]string
একটি স্লাইস, একটি অ্যারে নয়। একটি অ্যারে এবং স্লাইসের মধ্যে পার্থক্যগুলি সূক্ষ্ম তবে গুরুত্বপূর্ণ।