표준 입력에서 정수 읽기
fmt.Scanf
Go 에서 함수를 사용 하여 표준 입력에서 정수 입력을 얻으려면 어떻게해야 합니까?
을 사용하여 수행 할 수없는 경우 fmt.Scanf
단일 정수를 읽는 가장 좋은 방법은 무엇입니까?
http://golang.org/pkg/fmt/#Scanf
Go에 포함 된 모든 라이브러리는 잘 문서화되어 있습니다.
즉, 나는 믿는다
func main() {
var i int
_, err := fmt.Scanf("%d", &i)
}
속임수를 쓰다
좀 더 간결한 대안은 다음을 사용하는 것입니다 fmt.Scan
.
package main
import "fmt"
func main() {
var i int
fmt.Scan(&i)
fmt.Println("read number", i, "from stdin")
}
이것은 인수 유형에 대한 반영을 사용하여 입력을 구문 분석하는 방법을 발견합니다.
http://golang.org/pkg/fmt/#Scan
다음은 양의 정수를 읽는 "Fast IO"방법입니다. 비트 시프트와 미리 메모리 레이아웃을 통해 개선 될 수 있습니다.
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
}
Golang fmt.Scan은 Golang fmt.Scanf보다 간단합니다 (Clang scanf보다 간단합니다).
fmt.Scan 오류, 즉 nil이 아닌 경우 로그 및 반환
1 Read single variable:
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)
2 Read multiple variables:
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)
Best of luck
Example from: http://www.sortedinf.com/?q=golang-in-1-hour
func main(){
in:=bufio.NewScanner(os.Stdin)
in.Scan()
int,_:=strconv.Atoi(in.Text())
fmt.Println(int)
}
You can use fmt.Scanf
with a format specifier. The format specifier for the integer is %d. So you can use standard input like below.
func main() {
var someVar int
fmt.Scanf("%d", &someVar)
}
or else you can use fmt.Scan
or fmt.Scanln
as below.
func main() {
var someVar int
fmt.Scanln(&someVar)
}
참고URL : https://stackoverflow.com/questions/3751429/reading-an-integer-from-standard-input
'Development Tip' 카테고리의 다른 글
(function () {}) () 구조는 어떻게 작동하며 사람들이 왜 그것을 사용합니까? (0) | 2020.10.11 |
---|---|
제약의 이름을 모르는 경우 Oracle에서 "not null"제약 조건을 어떻게 삭제할 수 있습니까? (0) | 2020.10.11 |
HttpWebRequest에 사용자 지정 헤더 추가 (0) | 2020.10.11 |
레티 나가 아닌 디스플레이에서 Mac OS X 10.8 Mountain Lion에서 레티 나 디스플레이 (HiDPI 모드)를 시뮬레이션하는 방법은 무엇입니까? (0) | 2020.10.11 |
TFS 가져 오기 후 Visual Studio에서 충돌 해결 창을 여는 방법 (0) | 2020.10.11 |