Go指南練習_切片


源地址 https://tour.go-zh.org/moretypes/18

一、練習題描述

實現 Pic。它應當返回一個長度為 dy 的切片,其中每個元素是一個長度為 dx,元素類型為 uint8 的切片。當你運行此程序時,它會將每個整數解釋為灰度值(好吧,其實是藍度值)並顯示它所對應的圖像。

圖像的選擇由你來定。幾個有趣的函數包括 (x+y)/2x*yx^yx*log(y) 和 x%(y+1)

(提示:需要使用循環來分配 [][]uint8 中的每個 []uint8;請使用 uint8(intValue) 在類型之間轉換;你可能會用到 math 包中的函數。)

 

二、分析

  • 外層切片的長度為dy;
  • 內層切片的長度為dx;
  • 內層切片中的每個元素值為 (x+y)/2,x*y...;
  • 使用嵌套循環的方式計算顏色值。

 

三、Go代碼

package main

import "golang.org/x/tour/pic"

func Pic(dx, dy int) [][]uint8 {
    a := make([][]uint8,dy)  //外層切片
    for x := range a{
        b := make([]uint8,dx)  //里層切片
        for y := range b{
            b[y] = uint8(x*y - 1)  //給里層切片里的每一個元素賦值。其中x*y可以替換成別的函數
        }
        a[x] = b  //給外層切片里的每一個元素賦值
    }
    return a
}

func main() {
    pic.Show(Pic)
}

x*y 的運行結果

(x+y)/2 的運行結果

x^y 的運行結果

x%(y+1) 的運行結果

 

參考文檔 https://blog.csdn.net/qq_27818541/article/details/54346106

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM