绘制爱心文本时碰到的几个问题

ShixiangWang · · 868 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

大家好, 最近利用所学尝试使用 golang 绘制爱心文本,[代码](https://github.com/ShixiangWang/GoArduino/blob/master/Go/practice/textHeart/main.go)如下: ```go package main import ( "flag" "fmt" "math" "strings" ) // Print text heart // Author: ShixiangWang // Reference: https://blog.csdn.net/su_bao/article/details/80355001 func main() { // MYWORD My word var head string var tail string var MYWORD string var sep string var zoom float64 flag.StringVar(&head, "head", "There are some words I wana tell you:", "A sentence printed on the head") flag.StringVar(&tail, "tail", "\t\t\t\t--- Your lover", "A sentence printed on the tail") flag.StringVar(&MYWORD, "words", "Dear, I love you forever!", "The words you want to talk") flag.StringVar(&sep, "sep", " ", "The separator") flag.Float64Var(&zoom, "zoom", 1.0, "Zoom setting") flag.Parse() chars := strings.Split(MYWORD, sep) fmt.Println(head) fmt.Println() for _, char := range chars { allChar := make([]string, 0) for y := 12 * zoom; y > -12*zoom; y-- { lst := make([]string, 0) lstCon := "" for x := -30 * zoom; x < 30*zoom; x++ { x2 := float64(x) y2 := float64(y) formula := math.Pow(math.Pow(x2*0.04/zoom, 2)+math.Pow(y2*0.1/zoom, 2)-1, 3) - math.Pow(x2*0.04/zoom, 2)*math.Pow(y2*0.1/zoom, 3) if formula <= 0 { index := int(x) % len(char) if index >= 0 { lstCon += string(char[index]) } else { lstCon += string(char[int(float64(len(char))-math.Abs(float64(index)))]) } } else { lstCon += " " } } lst = append(lst, lstCon) allChar = append(allChar, lst...) } for _, text := range allChar { fmt.Printf("%s\n", text) } } fmt.Println("\t\t\t\t", tail) } ``` 目前代码遇到几个问题,以自己刚学习的水平难以解决,所以想请教下大家: 1. 没法打印中文,结果显示是乱码,非常奇怪。Golang 目前的编码类型变换我不是特别懂,`chars` 还是个字符串数组,`char[index]` 变成了 byte,感觉很难操作。如果代码内包含中文又是可以正常打印的。 ```shell $ go run main.go -words "加油" There are some words I wana tell you: åŠ æ²¹åŠ æ²  æ²¹åŠ æ²¹å  æ²¹åŠ æ²¹åŠ æ²¹åŠ æ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ² ¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ  æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ  æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²  æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²  æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²  æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ² 油加油加油加油加油加油加油加油加油加æ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ  ¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ Š æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹  æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ² ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ æ²¹åŠ  加油加油加油加油加油加油å 油加油加油加油加油加æ 加油加油加油加油å æ²¹åŠ æ²¹åŠ æ²¹åŠ æ Š æ²¹åŠ æ²¹ ²¹åŠ  å --- Your lover ``` 2. 第 2 个问题感觉特别奇怪,特殊字符打印出来还是特殊字符~如果代码内部指定,又是可以正常显示的。。。。 ```shell $ go run main.go -tail '\t\tThis is the end' -sep ';' There are some words I wana tell you: love you f love you fo r, I love you foreve r, I love you foreve Dear, I love you forever!Dear, I love you forever!D !Dear, I love you forever!Dear, I love you forever!De r!Dear, I love you forever!Dear, I love you forever!Dea er!Dear, I love you forever!Dear, I love you forever!Dear er!Dear, I love you forever!Dear, I love you forever!Dear er!Dear, I love you forever!Dear, I love you forever!Dear er!Dear, I love you forever!Dear, I love you forever!Dear r!Dear, I love you forever!Dear, I love you forever!Dea r!Dear, I love you forever!Dear, I love you forever!Dea !Dear, I love you forever!Dear, I love you forever!De Dear, I love you forever!Dear, I love you forever!D ar, I love you forever!Dear, I love you forever r, I love you forever!Dear, I love you foreve I love you forever!Dear, I love you fore love you forever!Dear, I love you fo ve you forever!Dear, I love you you forever!Dear, I love forever!Dear, I lo ever!Dear, r!Dea D \t\tThis is the end ``` 预祝大家新年快乐!

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

868 次点击  ∙  1 赞  
加入收藏 微博
1 回复  |  直到 2020-01-29 09:25:58
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传