যদিও চূড়ান্ত পারফরম্যান্ট না হলেও একমাত্র পঠনযোগ্য সমাধান
//split by separator and pick the first one.
//This has all the characters till null excluding null itself.
retByteArray := bytes.Split(byteArray[:], []byte{0}) [0]
// OR
//If you want a true C-like string including the null character
retByteArray := bytes.SplitAfter(byteArray[:], []byte{0}) [0]
সি-স্টাইল বাইট অ্যারে রাখার সম্পূর্ণ উদাহরণ:
package main
import (
"bytes"
"fmt"
)
func main() {
var byteArray = [6]byte{97,98,0,100,0,99}
cStyleString := bytes.SplitAfter(byteArray[:], []byte{0}) [0]
fmt.Println(cStyleString)
}
নালগুলি বাদ দিয়ে গো স্টাইল স্ট্রিংয়ের সম্পূর্ণ উদাহরণ:
package main
import (
"bytes"
"fmt"
)
func main() {
var byteArray = [6]byte{97,98,0,100,0,99}
goStyleString := string( bytes.Split(byteArray[:], []byte{0}) [0] )
fmt.Println(goStyleString)
}
এটি একটি স্লাইস বাইটের স্লাইস বরাদ্দ করে। সুতরাং যদি এটি ভারী বা বারবার ব্যবহৃত হয় তবে পারফরম্যান্সে নজর রাখুন।
^@
হয় না তবে আপনি যদি এটি টার্মিনালে বা এর অনুরূপ কিছু পরীক্ষা করে দেখেন তবে তা সেখানে হত। এর কারণটি হ'ল গো, বাইট অ্যারেগুলিকে স্ট্রিংতে রূপান্তর করা বন্ধ করে না যখন এটি একটি 0. খুঁজে পেয়েছেlen(string(bytes))
আপনার উদাহরণে 5 টি নয় এবং 1 এটি স্ট্রিং পুরোপুরি (জিরো সহ) মুদ্রিত কিনা আউটপুট ফাংশনের উপর নির্ভর করে অথবা না.