源地址 https://tour.go-zh.org/moretypes/18
一、練習題描述
實現 Pic。它應當返回一個長度為 dy 的切片,其中每個元素是一個長度為 dx,元素類型為 uint8 的切片。當你運行此程序時,它會將每個整數解釋為灰度值(好吧,其實是藍度值)並顯示它所對應的圖像。
圖像的選擇由你來定。幾個有趣的函數包括 (x+y)/2, x*y, x^y, x*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
