小编And*_*rey的帖子

断言接口到其类型

在一般情况下,我不能优雅地将图像的像素作为数组.

f, err := os.Open(imgPath)
check(err)
defer f.Close()
img, _, err := image.Decode(bufio.NewReader(f))
check(err)
pixels, err := getPixels(img)
check(err)
// Logic with pixels.
Run Code Online (Sandbox Code Playgroud)

现在函数getPixels看起来像这样:

func getPixels(img image.Image) ([]uint8, error) {
    if i, ok := img.(*image.NRGBA); ok {
        return i.Pix, nil
    } else if i, ok := img.(*image.Alpha); ok {
        return i.Pix, nil
    } else if i, ok := img.(*image.Alpha16); ok {
        return i.Pix, nil
    } else if i, ok := img.(*image.CMYK); ok {
        return i.Pix, nil
    } else if i, …
Run Code Online (Sandbox Code Playgroud)

go assertion go-interface

3
推荐指数
1
解决办法
285
查看次数

标签 统计

assertion ×1

go ×1

go-interface ×1