兄弟连Go语言教程实现clock
所有的新技术都经历了一些成长的痛苦,区块链技术也一样。但是,尽管它还处于发展的早期阶段,但它具有改进许多行业、许多应用和系统的巨大潜力。
Go语言具有其关键特性。Go语言之所以如此强大,是因为它在服务端的开发中总能抓住程序员的痛痒需求,用直接、简单、、稳定的方式来解决并实现问题。
1 package main
2
3 import (
4 "bufio"
5 "image"
6 "image/color"
7 "image/png"
8 "math"
9 "os"
10 "time"
11 )
12
13 const clock_size = 200
14 const radius = clock_size / 3
15
16 var colour color.RGBA
17
18 func circle(clock *image.RGBA) {
19 for angle := float64(0); angle < 360; angle++ {
20 radian_angle := math.Pi * 2 * angle / 360
21 x := radius*math.Sin(radian_angle) + clock_size/2
22 y := radius*math.Cos(radian_angle) + clock_size/2
23 clock.Set(int(x), int(y), colour)
24 }
25 }
26 func hand(clock *image.RGBA, angle float64, length float64) {
27 radian_angle := math.Pi * 2 * angle
28 x_inc := math.Sin(radian_angle)
29 y_inc := -math.Cos(radian_angle)
30 for i := float64(0); i < length; i++ {
31 x := i*x_inc + clock_size/2
32 y := i*y_inc + clock_size/2
33 clock.Set(int(x), int(y), colour)
34 }
35 }
36 func main() {
37 clock := image.NewRGBA(image.Rect(0,0,clock_size, clock_size))
38 colour.A = 255
39 circle(clock)
40 colour.R, colour.G, colour.B = 255,0,0
41 time := time.Now()
42 hand(clock, (float64(time.Hour())+float64(time.Minute())/60)/12, radius*0.5) // hour hand
43 colour.R, colour.G, colour.B = 0,255,0
44 hand(clock, (float64(time.Minute())+float64(time.Second())/60)/60, radius*0.6) // minute hand
45 colour.R, colour.G, colour.B = 0,0,255
46 hand(clock, float64(time.Second())/60, radius*0.8) // Second hand
47 out := bufio.NewWriter(os.Stdout)
48 defer out.Flush()
49 png.Encode(out, clock)
50 }
执行时,将结果重定向到.png文件中就会生成png文件
高能预警,兄弟连教育区块链直播课程8月持续火爆来袭!
原价1188元的12节区块链进阶课程,现仅需1元!
还可取《Go语言基础实战项目开发》与《Go语言实战项目开发》教材两本!!
限量!!先到先得!!
http://www.ydma.cn/open/course/24
网上报名
新闻资讯
更多>>-
兄弟连“因材施教搭建桥梁”计划正式启动
2018-06-14
-
兄弟连PHP培训:高薪就业才是硬道理
2018-06-14
-
兄弟连北京安卓培训:万元高薪班级爆满
2018-06-14
-
25W高薪挑战安卓 零基础培训首选兄弟连
2018-06-14
-
兄弟连PHP教程发布 海量资源应有尽有
2018-06-14