自学go来画一个圣诞树

Golang
174
0
0
2024-03-06

前言

如何用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实现的圣诞树,虽然略显粗糙。。