Golang(Go 언어) 입문 학습 - 10 - 오류, 데이터 읽기 및 이미지
7621 단어 golang
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
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
set containerThere is no built-in set container in Go How to implement Set struct{} => type struct{}{} => 0bytes How to create set :=...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.