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

相关推荐
一只叫煤球的猫6 小时前
写代码很6,面试秒变菜鸟?不卖课,面试官视角走心探讨
前端·后端·面试
bobz9656 小时前
tcp/ip 中的多路复用
后端
bobz9656 小时前
tls ingress 简单记录
后端
你的人类朋友7 小时前
什么是OpenSSL
后端·安全·程序员
bobz9658 小时前
mcp 直接操作浏览器
后端
前端小张同学10 小时前
服务器部署 gitlab 占用空间太大怎么办,优化思路。
后端
databook10 小时前
Manim实现闪光轨迹特效
后端·python·动效
武子康11 小时前
大数据-98 Spark 从 DStream 到 Structured Streaming:Spark 实时计算的演进
大数据·后端·spark
该用户已不存在11 小时前
6个值得收藏的.NET ORM 框架
前端·后端·.net
文心快码BaiduComate11 小时前
文心快码入选2025服贸会“数智影响力”先锋案例
前端·后端·程序员