[日常] Go语言圣经

2019-08-05| 发布者: admin| 查看: |

1.常量声明的值必须是一个数字值、字符串或者一个固定的boolean值。
2.常量声明和变量声明一般都会出现在包级别
3.[]color.Color{...}生成的是一个slice切片和gif.GIF{...}生成的是一个struct结构体这两个表达式就是我们说的复合声明
4.struct是一组值或者叫字段的集合,不同的类型集合在一个struct可以让我们以一个统一的单元进行处理,struct内部的变量可以以一个点来进行访问
5.import了一个包路径包含有多个单词的package时,比如image/color,通常我们只需要用最后那个单词表示这个包就可以





练习 1.5: 修改前面的Lissajous程序里的调色板,由黑色改为绿色。我们可以用color.RGBA{0xRR, 0xGG, 0xBB, 0xff}来得到#RRGGBB这个色值,三个十六进制的字符串分别代表红、绿、蓝像素。

package main
import  {
 rand.Seed.UTC.UnixNano)
 lissajous
//定义函数
func lissajous {
 const  * 3.0 // relative frequency of y oscillator
 anim := gif.GIF{LoopCount: nframes}
 phase := 0.0 // phase difference
 for i := 0; i nframes; i++ {
 rect := image.Rect
 img := image.NewPaletted
 for t := 0.0; t cycles*2*math.Pi; t += res {
 x := math.Sin
 y := math.Sin
 img.SetColorIndex, size+int,
 blackIndex)
 phase += 0.1 
 anim.Delay = append
 anim.Image = append
 gif.EncodeAll // NOTE: ignoring encoding errors

练习 1.6: 修改Lissajous程序,修改其调色板来生成更丰富的颜色,然后修改SetColorIndex的第三个参数,看看显示结果吧。

package main
import  {
 rand.Seed.UTC.UnixNano)
 lissajous
//定义函数
func lissajous {
 const  * 3.0 // relative frequency of y oscillator
 anim := gif.GIF{LoopCount: nframes}
 phase := 0.0 // phase difference
 for i := 0; i nframes; i++ {
 rect := image.Rect
 img := image.NewPaletted
 for t := 0.0; t cycles*2*math.Pi; t += res {
 x := math.Sin
 y := math.Sin
 img.SetColorIndex, size+int,
 blackIndex)
 phase += 0.1
 anim.Delay = append
 anim.Image = append
 gif.EncodeAll // NOTE: ignoring encoding errors