2010-04-18 4 views

답변

4
func Read(b []byte) (n int, err os.Error) 

ReadReader.Read 도우미를 호출하는 함수이다. Readervar Reader io.Reader으로 정의됩니다.

crypto/rand/

io.Reader

기본적인 Read 방법을 래핑하는 인터페이스이다.

Read 최대 len(p) 바이트를 p으로 읽습니다. 읽은 바이트 수 (0 <= n <= len(p))와 발생한 오류를 반환합니다. Readn < len(p)을 반환하더라도 통화 중에는 p을 모두 스크래치 공간으로 사용할 수 있습니다. 일부 데이터를 사용할 수 있지만 len(p) 바이트가 아니면 Read은 더 이상 대기하지 않고 사용할 수있는 데이터를 반환합니다.

입력 스트림의 끝에서 Read0, os.EOF을 반환합니다. Read은 0이 아닌 수의 바이트를 오류로 반환 할 수 있습니다. 특히 Read이 입력을 소모하면 n>0, os.EOF이 반환 될 수 있습니다. 패키지 init() 함수를 사용하는 /dev/urandomcrypto/rand 기본값을 사용하여 임의의 처음 16 바이트를 판독하는

type Reader interface { 
    Read(p []byte) (n int, err os.Error) 
} 

io/#Reader

,

package main 

import (
    "fmt" 
    "crypto/rand" 
) 

func main() { 
    b := make([]byte, 16) 
    n, err := rand.Read(b) 
    fmt.Println(n, err, b) 
} 

.

// Easy implementation: read from /dev/urandom. 
// This is sufficient on Linux, OS X, and FreeBSD. 
func init() { Reader = &devReader{name: "/dev/urandom"} } 

crypto/rand/rand.go

+0

당신은 *에 액세스 할 수는/dev/urandom을 * 그것은') (초기화하기 '에 정의되어 있기 때문에, 그러나에'(*는/dev/임의 * 사용) newReader' 때문에 그것은 unexported. – user316368

+1

newReader 및 devReader는 효과적으로 내보내지지 않으므로/dev/urandom이 항상 사용됩니다. – peterSO