Golang(Go 언어) 입문 학습 - 10 - 오류, 데이터 읽기 및 이미지

7621 단어 golang
  • 오류
  • Reader
  • 이미지

  • 1. 오류


    Go 프로그램은 오류 상태를 나타내는 error 값을 사용합니다.
    fmt.Stringer와 유사합니다. error 유형은 내장 인터페이스입니다.
    type error interface {
        Error() string
    }

    (fmt.Stringer와 유사하게 fmt 패키지는 값을 인쇄할 때 error를 충족합니다.)
    보통 함수는 오류 값을 되돌려줍니다. 호출된 코드는 이 오류가nil과 같은 오류인지 판단해야 합니다.
    i, err := strconv.Atoi("42")
    if err != nil {
        fmt.Printf("couldn't convert number: %v
    "
    , err) return } fmt.Println("Converted integer:", i)

    error가nil일 때 성공을 표시합니다.비nil의 error는 실패를 나타냅니다.
    package main
    
    import (
        "fmt"
        "time"
    )
    
    type MyError struct {
        When time.Time
        What string
    }
    
    func (e *MyError) Error() string {
        return fmt.Sprintf("at %v, %s",
            e.When, e.What)
    }
    
    func run() error {
        return &MyError{
            time.Now(),
            "it didn't work",
        }
    }
    
    func main() {
        if err := run(); err != nil {
            fmt.Println(err)
        }
    }
    

    출력
    at 2009-11-10 23:00:00 +0000 UTC m=+0.000000001, it didn't work
    

    2. Reader


    io 패키지가 io를 지정했습니다.Reader 인터페이스, 데이터 흐름의 끝에서 읽는 것을 나타냅니다.
    Go 표준 라이브러리는 파일, 네트워크 연결, 압축, 암호화 등 이 인터페이스의 많은 실현을 포함한다.
    io.Reader 인터페이스에는 다음과 같은 읽기 방법이 있습니다.
    func (T) Read(b []byte) (n int, err error)

    Read는 주어진 바이트 슬라이스를 데이터로 채우고 채워진 바이트 수와 오류 값을 되돌려줍니다.데이터 흐름의 끝에 부딪히면 io를 되돌려줍니다.EOF 오류입니다.
    예시 코드가strings를 만들었습니다.Reader는 8바이트마다 출력을 읽습니다.
    package main
    
    import (
        "fmt"
        "io"
        "strings"
    )
    
    func main() {
        r := strings.NewReader("Hello, Reader!")
    
        b := make([]byte, 8)
        for {
            n, err := r.Read(b)
            fmt.Printf("n = %v err = %v b = %v
    "
    , n, err, b) fmt.Printf("b[:n] = %q
    "
    , b[:n]) if err == io.EOF { break } } }

    출력
    n = 8 err = <nil> b = [72 101 108 108 111 44 32 82]
    b[:n] = "Hello, R"
    n = 6 err = <nil> b = [101 97 100 101 114 33 32 82]
    b[:n] = "eader!"
    n = 0 err = EOF b = [101 97 100 101 114 33 32 82]
    b[:n] = ""
    

    3. 이미지


    image 패키지는 Image 인터페이스를 정의합니다.
    package image
    
    type Image interface {
        ColorModel() color.Model
        Bounds() Rectangle
        At(x, y int) color.Color
    }

    주의: Bounds 방법의 반환값 Rectangle은 사실상 이미지입니다.Rectangle, 이미지 패키지에 설명되어 있습니다.
    color.Color와 color.모델 유형도 인터페이스이지만 일반적으로 미리 정의된 구현 이미지를 직접 사용하기 때문이다.RGBA 및 이미지.RGBAModel은 무시되었습니다.이 인터페이스와 형식은image/color 패키지에 의해 정의됩니다.
    package main
    
    import (
        "fmt"
        "image"
    )
    
    func main() {
        m := image.NewRGBA(image.Rect(0, 0, 100, 100))
        fmt.Println(m.Bounds())
        fmt.Println(m.At(0, 0).RGBA())
    }
    

    출력
    (0,0)-(100,100)
    0 0 0 0
    

    좋은 웹페이지 즐겨찾기