>백엔드 개발 >Golang >Go에서 여러 숫자를 효율적으로 조각으로 스캔하는 방법은 무엇입니까?

Go에서 여러 숫자를 효율적으로 조각으로 스캔하는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-17 09:37:25925검색

How to Efficiently Scan Multiple Numbers into a Slice in Go?

Go에서 숫자를 조각으로 스캔

Go의 표준 입력에서 여러 숫자를 읽을 때 개별 변수에 값을 할당할 수 있습니다.

numbers := make([]int, 2)
fmt.Fscan(os.Stdin, &numbers[0], &numbers[1])

그러나 프로세스를 단순화하고 슬라이스로 직접 읽어들이는 것이 좋습니다. fmt 패키지는 슬라이스 스캔을 지원하지 않지만 다음 유틸리티 함수가 도움이 될 수 있습니다.

func packAddrs(n []int) []interface{} {
    p := make([]interface{}, len(n))
    for i := range n {
        p[i] = &n[i]
    }
    return p
}

이 함수는 입력 슬라이스의 각 요소에 대한 주소 슬라이스를 생성합니다. 이 기능을 사용하면 다음과 같은 슬라이스로 스캔할 수 있습니다.

numbers := make([]int, 2)
n, err := fmt.Fscan(os.Stdin, packAddrs(numbers)...)
fmt.Println(numbers, n, err)

fmt.Sscan()으로 테스트:

numbers := make([]int, 5)
n, err := fmt.Sscan("1 3 5 7 9", packAddrs(numbers)...)
fmt.Println(numbers, n, err)

출력:

[1 3 5 7 9] 5 <nil>

위 내용은 Go에서 여러 숫자를 효율적으로 조각으로 스캔하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.