go语言实现的圣诞树的几个姿势

前言

如何用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中添加一行代码。

go 复制代码
const TheVersion = `go1.21.5`

记得替换为自己的版本号,而且是反引号。设置完成之后,就可以创建go项目了。

速学go

之前没学过go,但是语言之间都有互通性,所以在官网找到了go的语法教程。

起手式:Hello World!

学会了main、输出、引用,再看看if、while、for之后,以后简历直接精通go开发!然后这里就

简单实现

这里就是最简单的实现方法,使用for来循环打印星号来实现的。

go 复制代码
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:

shell 复制代码
go get github.com/kyokomi/emoji/v2

然后就是开发代码,也是运用循环来输出对应的emoji。

go 复制代码
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实现的圣诞树,虽然略显粗糙。。

相关推荐
Fairy_sevenseven2 分钟前
【二十八】【QT开发应用】模拟WPS Tab
开发语言·qt·wps
蜡笔小新星10 分钟前
Python Kivy库学习路线
开发语言·网络·经验分享·python·学习
凯子坚持 c10 分钟前
C语言复习概要(三)
c语言·开发语言
coderWangbuer18 分钟前
基于springboot的高校招生系统(含源码+sql+视频导入教程+文档+PPT)
spring boot·后端·sql
无限大.22 分钟前
c语言200例 067
java·c语言·开发语言
余炜yw23 分钟前
【Java序列化器】Java 中常用序列化器的探索与实践
java·开发语言
攸攸太上23 分钟前
JMeter学习
java·后端·学习·jmeter·微服务
篝火悟者24 分钟前
问题-python-运行报错-SyntaxError: Non-UTF-8 code starting with ‘\xd5‘ in file 汉字编码问题
开发语言·python
Kenny.志26 分钟前
2、Spring Boot 3.x 集成 Feign
java·spring boot·后端
Death20027 分钟前
Qt 中的 QListWidget、QTreeWidget 和 QTableWidget:简化的数据展示控件
c语言·开发语言·c++·qt·c#