আমি কীভাবে এটি ব্যবহার করব fmt.Scanf
স্ট্যান্ডার্ড ইনপুট থেকে কোনও পূর্ণসংখ্যার ইনপুট পেতে ফাংশনটি ?
যদি এটি ব্যবহার করে না করা যায় fmt.Scanf
, তবে একটি একক পূর্ণসংখ্যা পড়ার সবচেয়ে ভাল উপায় কী?
উত্তর:
http://golang.org/pkg/fmt/# স্ক্যানফ
গোতে অন্তর্ভুক্ত সমস্ত লাইব্রেরি ভাল ডকুমেন্টেড রয়েছে।
বলা হচ্ছে, আমি বিশ্বাস করি
func main() {
var i int
_, err := fmt.Scanf("%d", &i)
}
কৌতুক করে
&i
এবং কেবল i
যেমন প্রবেশ করবেন না তা আপনি ব্যাখ্যা করতে পারেন fmt.Printf("%v", i)
?
i
কেবলমাত্র পূর্ণসংখ্যার মান i
, &i
এটিই একটি পয়েন্টার i
।
scanner := bufio.NewScanner(os.Stdin)
কিছুটা সংক্ষিপ্ত হতে পারে এমন একটি বিকল্প হ'ল ব্যবহার করা fmt.Scan
:
package main
import "fmt"
func main() {
var i int
fmt.Scan(&i)
fmt.Println("read number", i, "from stdin")
}
ইনপুট কীভাবে পার্স করা উচিত তা আবিষ্কার করতে এটি আর্গুমেন্টের ধরণের প্রতিবিম্ব ব্যবহার করে।
ইতিবাচক পূর্ণসংখ্যার পড়ার জন্য এখানে আমার "ফাস্ট আইও" পদ্ধতিটি রয়েছে। এটি বিটশিফ্ট এবং মেমরিটি আগেই রেখে দিয়ে উন্নত করা যেতে পারে।
package main
import (
"io/ioutil"
"bufio"
"os"
"strconv"
)
func main() {
out := bufio.NewWriter(os.Stdout)
ints := getInts()
var T int64
T, ints = ints[0], ints[1:]
..
out.WriteString(strconv.Itoa(my_num) + "\n")
out.Flush()
}
}
func getInts() []int64 {
//assumes POSITIVE INTEGERS. Check v for '-' if you have negative.
var buf []byte
buf, _ = ioutil.ReadAll(os.Stdin)
var ints []int64
num := int64(0)
found := false
for _, v := range buf {
if '0' <= v && v <= '9' {
num = 10*num + int64(v - '0') //could use bitshifting here.
found = true
} else if found {
ints = append(ints, num)
found = false
num = 0
}
}
if found {
ints = append(ints, num)
found = false
num = 0
}
return ints
}
গোলং এফএমটি.স্ক্যান গোলং এফএমটি.স্কানফের চেয়ে সহজ (যা ক্ল্যাং স্ক্যানফের চেয়ে সহজ)
যদি এফএমটি.স্ক্যান ত্রুটিগুলি যেমন শূন্য না হয় তবে লগ করুন এবং ফিরে আসুন
import (
"fmt"
"log"
)
var i int
if _, err := fmt.Scan(&i); err != nil {
log.Print(" Scan for i failed, due to ", err)
return
}
fmt.Println(i)
import (
"fmt"
"log"
)
var i, j, k int
if _, err := fmt.Scan(&i, &j, &k); err != nil {
log.Print(" Scan for i, j & k failed, due to ", err)
return
}
fmt.Println(i, j, k)
শুভকামনা করছি
এর থেকে উদাহরণ: http://www.sortinf.com/?q=golang-in-1- ঘন্টা
আপনি fmt.Scanf
একটি বিন্যাস নির্দিষ্টকরণকারক সঙ্গে ব্যবহার করতে পারেন । পূর্ণসংখ্যার জন্য বিন্যাস নির্দিষ্টকরণটি% d। সুতরাং আপনি নীচের মত স্ট্যান্ডার্ড ইনপুট ব্যবহার করতে পারেন।
func main() {
var someVar int
fmt.Scanf("%d", &someVar)
}
বা অন্য আপনি ব্যবহার করতে পারেন fmt.Scan
বা fmt.Scanln
নিচের।
func main() {
var someVar int
fmt.Scanln(&someVar)
}