কিভাবে 69 এর পরিবর্তে "ই" আউটপুট পাবেন?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
কোনও চরকে বাইটে এবং তদ্বিপরীত রূপান্তর করতে গোলংয়ের কাজ আছে কি?
কিভাবে 69 এর পরিবর্তে "ই" আউটপুট পাবেন?
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1])
}
কোনও চরকে বাইটে এবং তদ্বিপরীত রূপান্তর করতে গোলংয়ের কাজ আছে কি?
উত্তর:
বর্ণিত স্ট্রিং লিটারালগুলি স্বতন্ত্র অক্ষরের "(সম্ভবত বহু-বাইট) ইউটিএফ -8 এনকোডিং ব্যবহার করে" "ডাবল উদ্ধৃতিগুলির মধ্যে অক্ষর ক্রম হয়। ইউটিএফ -8 এ, এএসসিআইআই অক্ষরগুলি প্রথম 128 ইউনিকোড অক্ষরের সাথে সম্পর্কিত একক বাইট te স্ট্রিংগুলি বাইটের স্লাইসের মতো আচরণ করে। একটি রুনি একটি ইউনিকোড কোড পয়েন্ট সনাক্ত করে একটি পূর্ণসংখ্যা মান। অতএব,
package main
import "fmt"
func main() {
fmt.Println(string("Hello"[1])) // ASCII only
fmt.Println(string([]rune("Hello, 世界")[1])) // UTF-8
fmt.Println(string([]rune("Hello, 世界")[8])) // UTF-8
}
আউটপুট:
e
e
界
পড়ুন:
কেমন হয় এই ?
fmt.Printf("%c","HELLO"[1])
পিটার যেমন উল্লেখ করেছেন, কেবলমাত্র ASCII এর চেয়ে বেশি কিছু করার অনুমতি দেওয়ার জন্য:
fmt.Printf("%c", []rune("HELLO")[1])
টুকরো টুকরো করার মাধ্যমেও করা যায়
package main
import "fmt"
func main() {
fmt.Print("HELLO"[1:2])
}
দ্রষ্টব্য: এই সমাধানটি কেবলমাত্র ASCII অক্ষরের জন্য কাজ করে।
গো-তে আসলে কোনও চরিত্রের ধরণ নেই। বাইট প্রায়শই ASCII অক্ষরগুলির জন্য ব্যবহৃত হয়, এবং ইউনকোড অক্ষরগুলির জন্য রুন ব্যবহৃত হয়, তবে এগুলি উভয়ই পূর্ণসংখ্যার প্রকারের (uint8 এবং int32) জন্য কেবলমাত্র এলিয়াস। সুতরাং আপনি যদি তাদের সংখ্যার পরিবর্তে অক্ষর হিসাবে মুদ্রণ করতে বাধ্য করতে চান, আপনার ব্যবহার করা দরকার Printf("%c", x)
। %c
বিন্যাস স্পেসিফিকেশন কোন পূর্ণসংখ্যা টাইপ জন্য কাজ করে।
একটি চরটিকে স্ট্রিং হিসাবে ব্যাখ্যা করার সাধারণ সমাধান string("HELLO"[1])
।
সমৃদ্ধের সমাধানটিও অবশ্যই কাজ করে।
একটি স্ট্রিংয়ে একটি অক্ষর বিচ্ছিন্ন করার জন্য আরেকটি সমাধান
package main
import "fmt"
func main() {
var word string = "ZbjTS"
// P R I N T
fmt.Println(word)
yo := string([]rune(word)[0])
fmt.Println(yo)
//I N D E X
x :=0
for x < len(word){
yo := string([]rune(word)[x])
fmt.Println(yo)
x+=1
}
}
স্ট্রিং অ্যারেগুলির জন্যও:
fmt.Println(string([]rune(sArray[0])[0]))
// = মন্তব্য করা লাইন
len("cafés")
> len([]rune("cafés"))
এবং, জন্য প্রতিটি পুনরাবৃত্তির উপর স্ট্রিং reconvert পারে হে (ছিল n ²)। শুধু কি for _, r := range word { fmt.Printf("%c", r) }
। আপনি কি সত্যিই একটি সূচক সঙ্গে লুপ চেয়েছিলেন for x := 0; x < limit; x++
। দয়া করে উত্তর দেওয়ার আগে একটি ভাষা বুনিয়াদি শিখতে প্রশ্নসমূহ।
"हैलो"[:1]
করে