前言
如何用go语言画一个圣诞树,To me,当然是从安装go的SDK开始....
去go官网下载对应的jdk。
我的操作系统是Mac,这里我先则macOS的归档版下载。下载完之后解压,然后就是集成到我的IDEA中去,
IDEA配置go
先安装go插件。
然后在Languages & Frameworks中配置GORoot和GOPath。GORoot选择解压后的目录,GOPath我设置为/user/local/go。
在设置goRoot时,提示“is not a vaild home for Go SDK”。
查了一下,应该是go的版本过高,1.17版本应该就没问题。我这里用的1.21,所以在go/src/runtime/internal/sys/zversion.go中添加一行代码。
const TheVersion = `go1.21.5`
记得替换为自己的版本号,而且是反引号。设置完成之后,就可以创建go项目了。
速学go
之前没学过go,但是语言之间都有互通性,所以在官网找到了go的语法教程。
起手式:Hello World!
学会了main、输出、引用,再看看if、while、for之后,以后简历直接精通go开发!然后这里就
简单实现
这里就是最简单的实现方法,使用for来循环打印星号来实现的。
package main
import "fmt"
func main() {
height := 10
for i := 0; i < height; i++ {
for j := 0; j < height-i; j++ {
fmt.Print(" ")
}
for k := 0; k < 2*i+1; k++ {
fmt.Print("*")
}
fmt.Println()
}
for i := 0; i < 2; i++ {
for j := 0; j < height-1; j++ {
fmt.Print(" ")
}
fmt.Println("***")
}
}
运行结果:
不过,这的确是有点单调,有没有一些图形化的输出,可以有意思一点,然后找到了一个,使用emoji库来生成一个圣诞树。
emoji库
首先安装emoji:
go get github.com/kyokomi/emoji/v2
然后就是开发代码,也是运用循环来输出对应的emoji。
package main
import (
"fmt"
"github.com/kyokomi/emoji/v2"
"math/rand"
)
func getEmoji() {
num := rand.Int()
switch num % 8 {
case 1:
emoji.Printf(":apple:")
case 2:
emoji.Printf(":candy:")
default:
emoji.Printf(":leaves:")
}
}
func main() {
fmt.Println()
level := 10
for i := 0; i <= level; i++ {
for j := 0; j <= level-i; j++ {
fmt.Print(" ")
}
for k := 0; k <= i; k++ {
if i == 0 && k == 0 {
emoji.Printf(":star:")
} else {
getEmoji()
}
}
if i == 0 {
emoji.Printf(" :snowflake:")
} else if i == 2 {
emoji.Printf(" :snowflake:")
}
fmt.Println()
}
for i := 0; i <= 3; i++ {
emoji.Print(" :gift:")
emoji.Print(":gift:")
emoji.Println(":gift:")
}
}
首先圣诞树树体部分主要选择了三个emoji,分别是apple、candy、leaves。i为0,即第一行会输出一个星星,其他的部分会进行判断然后使用随机数取余的方法,来挑选对应的emoji。
树干部分就是使用gif的emoji来组成。使用空格来调整第一个emoji的位置,让树干在树体的中央部分。
最后就是在第一行、第三行加了两个雪花的输出。运行程序,查看结果。
结语
这用我临时抱佛脚学的go实现的圣诞树,虽然略显粗糙。。