前言

我们从最基础的语法学到现在,大家应该已经对go语言有了一定的了解,学会了判断语句之后,我们其实就可以写一些比较复杂的脚本了。

脚本复杂与否并不重要,重要的是如何实现这个功能。

原题

根据用户输入的生日来判断星座

分析

首先我们先整理出来星座有什么特点

白羊座: 3月21日–4月19日
金牛做: 4月20日-5月20日
双子座: 5月21日-6月21日
巨蟹座: 6月22日-7月22日
狮子座: 7月23日-8月22日
处女座: 7月23日–8月22日
天秤座“:9月23日–10月23日
天蝎座: 10月24日-11月22日
射手座: 11月23日-12月21日
水瓶座: 1月20日-2月18日
双鱼座:2月19日–3月20日

可以看到,我们如果用用户的生日来判断在哪个日期范围内,不太好做。

字符串不好比较大小或者范围。

但我们可以转化一下,比如白羊座是: 3.21-4.19

也就是相当于把日期都变成浮点数。 限制用户输入的日期格式,比如2022年10月21,可以输入为2022-10-21

我们只需要把2022-10-21这个字符串根据-分割一下,留下10 21 这两个数字

然后在把这两个数字变成10.21 ,用字符串拼接即可。

判断范围就可以使用if或者是switch都可以。

代码

第一部分: 提示用户输入

import ("fmt""strings"
)func main() {var Birthday stringfmt.Println("请输入你的生日,格式为2022-10-21") //提示用户输入生日fmt.Scanln(&Birthday)                //收集用户的输入fmt.Println(Birthday)}

第二部分: 完成生日的分割,变成数组

import ("fmt""strings"
)func main() {var Birthday stringfmt.Println("请输入你的生日,格式为2022-10-21") //提示用户输入生日fmt.Scanln(&Birthday)                //收集用户的输入// 把用户输入的字符串进行拆分Birthday_arr := strings.Split(Birthday, "-")fmt.Println(Birthday)fmt.Println(Birthday_arr)}

执行结果

第三部分: 拼接成浮点数

package mainimport ("fmt""strings"
)func main() {var Birthday stringfmt.Println("请输入你的生日,格式为2022-1-1") //提示用户输入生日fmt.Scanln(&Birthday)              //收集用户的输入// 把用户输入的字符串进行拆分Birthday_arr := strings.Split(Birthday, "-")fmt.Println(Birthday)fmt.Println(Birthday_arr)month := Birthday_arr[1]day := Birthday_arr[2]fmt.Println(month, day)var date = month + "." + dayfmt.Println(date)
}

把字符串转行成浮点数

package mainimport ("fmt""reflect""strconv""strings"
)func main() {var Birthday stringfmt.Println("请输入你的生日,格式为2022-1-1") //提示用户输入生日fmt.Scanln(&Birthday)              //收集用户的输入// 把用户输入的字符串进行拆分Birthday_arr := strings.Split(Birthday, "-")fmt.Println(Birthday)fmt.Println(Birthday_arr)month := Birthday_arr[1]day := Birthday_arr[2]fmt.Println(month, day)var date = month + "." + dayfmt.Println(date, reflect.TypeOf(date))//把字符串形式的date变成浮点数date_float, _ := strconv.ParseFloat(date, 64)fmt.Println(date_float, reflect.TypeOf(date_float))
}

第四部分,开始判断属于哪个星座:

package mainimport ("fmt""reflect""strconv""strings"
)func main() {var Birthday stringfmt.Println("请输入你的生日,格式为2022-1-1") //提示用户输入生日fmt.Scanln(&Birthday)              //收集用户的输入// 把用户输入的字符串进行拆分Birthday_arr := strings.Split(Birthday, "-")fmt.Println(Birthday)fmt.Println(Birthday_arr)month := Birthday_arr[1]day := Birthday_arr[2]fmt.Println(month, day)var date = month + "." + dayfmt.Println(date, reflect.TypeOf(date))//把字符串形式的date变成浮点数date_float, _ := strconv.ParseFloat(date, 64)fmt.Println(date_float, reflect.TypeOf(date_float))if date_float >= 3.21 && date_float <= 4.19 {fmt.Println("你是白羊座")} else if date_float >= 4.20 && date_float <= 5.20 {fmt.Println("你是金牛座")} else if date_float >= 5.21 && date_float <= 6.21 {fmt.Println("你是双子座")} else if date_float >= 6.22 && date_float <= 7.22 {fmt.Println("你是巨蟹座")} else if date_float >= 7.23 && date_float <= 8.22 {fmt.Println("你是狮子座")} else if date_float >= 8.23 && date_float <= 9.22 {fmt.Println("你是处女座位")} else if date_float >= 9.23 && date_float <= 10.23 {fmt.Println("你是天秤座")} else if date_float >= 10.24 && date_float <= 11.22 {fmt.Println("你是天蝎座")} else if date_float >= 11.23 && date_float <= 12.21 {fmt.Println("你是射手")} else if date_float >= 12.22 && date_float <= 12.31 || date_float >= 1.10 && date_float < 2.19 {fmt.Println("你是摩羯座")} else if date_float >= 2.19 && date_float <= 3.20 {fmt.Println("你是双鱼座")} else {fmt.Println("日期输入错误,请重新输入")}
}

需要注意的是: 摩羯座12月到一月,如果写成 date_float >= 12.22 && date_float < 2.19 这个是不成立的,所以对于跨月份的,要写成:

date_float >= 12.22 && date_float <= 12.31 || date_float >= 1.10 && date_float < 2.19

总结

对于编程来讲,一个程序实现的方法有很多,除了刚刚这种方法外,还有很多种方法可以实现, 建议大家开动脑筋想想还有哪些方法,或者当我们学到后面的时候,在回来看看这个程序还有没有更好的方法可以实现的。

比如switch如何实现,比如使用数组怎么实现,等等。

而且任何脚本都是从一个小的脚本去慢慢的完善,有bug解决bug,需要修修改改,不要指望一口气可以把程序写完。

每个大的程序都可以从小程序一点点完善功能去变成一个大的脚本。

go语言基础语法-用一个程序学会编程思维相关推荐

  1. r语言 新增一列数字类型_R语言实战之R语言基础语法精讲(一)

    R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具.在学习R数据科学之前,我们首先要对R语言的基础语法有一个良好的了 ...

  2. Go语言 基础语法学习 (未完待更......

    文章目录 一 Go语言结构 1 Go Hello world实例 2 执行Go程序 二 Go语言基础语法 1 Go标记 2 行分隔符 3 注释 4 标识符 5 一些关键字 6 Go语言的空格 7 格式 ...

  3. C语言基础语法【1】

    目录 1.在linux系统编写C语言,基本命令:变量.常量.标识符 2.数据类型.取值范围.字符串 3.短路原则.类型转换 4.switch语句.for.while循环.死循环 1.在linux系统编 ...

  4. GO 语言基础语法一 (快速入门 Go 语言)

    Go语言基础语法 一. golang 标识符,关键字,命名规则 二. golang 变量 三. golang 常量 四. golang 数据类型 五. golang 布尔类型 六. golang 数字 ...

  5. 【Go编程语言】 Go语言基础语法

    Go语言基础语法 文章目录 Go语言基础语法 一.注释 1.单行注释 2.多行注释 二.变量 1.变量的定义 2.变量的初始化 3.理解变量(内存地址) 4.变量交换 5.匿名变量 6.变量的作用域 ...

  6. 【Day4 C语言基础语法学习-3】

    Day4 C语言基础语法学习-3 一 数组 1.1 数组的概念 1.2 一维数组 1.2.1 一维数组的定义 1.2.2 一维数组的性质 1.3 一维数组的初始化和遍历 1.4 冒泡排序法 二.二维数 ...

  7. 【Day3 C语言基础语法学习-2】

    Day3 C语言基础语法学习-2 一.输入输出函数 1.1 getchar()/putcgar() 1.1.1getchar() 1.1.2 putchar 1.2 gets()/puts() 1.2 ...

  8. Go语言基础语法讲解与学习

    Go语言基础语法讲解与学习 1 Go语言基础知识介绍 ​ 介绍Go语言之前,我们先了解一下有哪些开源项目是Go语言开发的,其中就包括 Docker.Go-Ethereum.Thrraform 和 Ku ...

  9. Go语言基础语法--注释、基础结构2

    章节 GO语言基础语法--注释.基础结构(重要) 1.GO语言基础语法---注释.基础结构 //程序所属的包,且必须在源文件代码第一行 package mainimport "fmt&quo ...

最新文章

  1. 【蓝桥java】递归基础之智力训练
  2. iOS:分页控件UIPageControl的使用
  3. 你写的 Java 代码是如何一步步输出结果的
  4. vs安装 c语言编译环境,Visual Studio Code安装与C/C++开发调试环境搭建
  5. 去哪儿网查不到历史订单_去哪儿网 数据清洗
  6. uban服务器系统,Web服务器-并发服务器-Epoll(3.4.5)
  7. l#039;oracle 酒,2011 Stellenbosch Vineyards Oracle of the Sun Shiraz, Stellenbosch, South Africa
  8. DIV+CSS规范命名集合
  9. 极简代码(八)—— binary activation function
  10. C. Oh Those Palindromes
  11. 内存记号(Memory Trail)[自定义的名字] --调试方法
  12. 拓端tecdat|R语言具有Student-t分布改进的GARCH(1,1)模型的贝叶斯估计
  13. 一点点读懂regulator(四)
  14. 解决:VideoWriter保存视频无法打开以及保存的视频仅有几KB
  15. 切割钢条问题(rod cutting problem)
  16. 教师网络计算机研修培训总结,教师网络研修总结
  17. HTML ===> 向右侧展开div
  18. 《Mysql是怎样运行的》读书笔记之独立表空间结构
  19. 陌陌前端面试 - 凉面
  20. 用emacs的org-mode写日记

热门文章

  1. WEB页面SEO —— 网站TDK优化细节
  2. ubuntu 搜狗输入法突然只能输入拼音
  3. linux网络连接问题(ping不通)
  4. 用计算机弹音乐之声,弹响第一个音符
  5. 人类数据总量_人类已产生五十亿GB数据 X一代贡献的数据总量最大
  6. 计算机信息安全与防范任务书,2013-14信息安全综合实践任务书.pdf
  7. 地理信息系统:利用ArcGIS制作校园地图
  8. python的post请求中加参数_Python 模拟post请求
  9. oracle 移动分区表到指定表空间,及修改表的默认表空间
  10. ros2中navigation2的BT常用语法总结1