go语言基础语法-用一个程序学会编程思维
前言
我们从最基础的语法学到现在,大家应该已经对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语言基础语法-用一个程序学会编程思维相关推荐
- r语言 新增一列数字类型_R语言实战之R语言基础语法精讲(一)
R是用于统计分析.绘图的语言和操作环境.R是属于GNU系统的一个自由.免费.源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具.在学习R数据科学之前,我们首先要对R语言的基础语法有一个良好的了 ...
- Go语言 基础语法学习 (未完待更......
文章目录 一 Go语言结构 1 Go Hello world实例 2 执行Go程序 二 Go语言基础语法 1 Go标记 2 行分隔符 3 注释 4 标识符 5 一些关键字 6 Go语言的空格 7 格式 ...
- C语言基础语法【1】
目录 1.在linux系统编写C语言,基本命令:变量.常量.标识符 2.数据类型.取值范围.字符串 3.短路原则.类型转换 4.switch语句.for.while循环.死循环 1.在linux系统编 ...
- GO 语言基础语法一 (快速入门 Go 语言)
Go语言基础语法 一. golang 标识符,关键字,命名规则 二. golang 变量 三. golang 常量 四. golang 数据类型 五. golang 布尔类型 六. golang 数字 ...
- 【Go编程语言】 Go语言基础语法
Go语言基础语法 文章目录 Go语言基础语法 一.注释 1.单行注释 2.多行注释 二.变量 1.变量的定义 2.变量的初始化 3.理解变量(内存地址) 4.变量交换 5.匿名变量 6.变量的作用域 ...
- 【Day4 C语言基础语法学习-3】
Day4 C语言基础语法学习-3 一 数组 1.1 数组的概念 1.2 一维数组 1.2.1 一维数组的定义 1.2.2 一维数组的性质 1.3 一维数组的初始化和遍历 1.4 冒泡排序法 二.二维数 ...
- 【Day3 C语言基础语法学习-2】
Day3 C语言基础语法学习-2 一.输入输出函数 1.1 getchar()/putcgar() 1.1.1getchar() 1.1.2 putchar 1.2 gets()/puts() 1.2 ...
- Go语言基础语法讲解与学习
Go语言基础语法讲解与学习 1 Go语言基础知识介绍 介绍Go语言之前,我们先了解一下有哪些开源项目是Go语言开发的,其中就包括 Docker.Go-Ethereum.Thrraform 和 Ku ...
- Go语言基础语法--注释、基础结构2
章节 GO语言基础语法--注释.基础结构(重要) 1.GO语言基础语法---注释.基础结构 //程序所属的包,且必须在源文件代码第一行 package mainimport "fmt&quo ...
最新文章
- 【蓝桥java】递归基础之智力训练
- iOS:分页控件UIPageControl的使用
- 你写的 Java 代码是如何一步步输出结果的
- vs安装 c语言编译环境,Visual Studio Code安装与C/C++开发调试环境搭建
- 去哪儿网查不到历史订单_去哪儿网 数据清洗
- uban服务器系统,Web服务器-并发服务器-Epoll(3.4.5)
- l#039;oracle 酒,2011 Stellenbosch Vineyards Oracle of the Sun Shiraz, Stellenbosch, South Africa
- DIV+CSS规范命名集合
- 极简代码(八)—— binary activation function
- C. Oh Those Palindromes
- 内存记号(Memory Trail)[自定义的名字] --调试方法
- 拓端tecdat|R语言具有Student-t分布改进的GARCH(1,1)模型的贝叶斯估计
- 一点点读懂regulator(四)
- 解决:VideoWriter保存视频无法打开以及保存的视频仅有几KB
- 切割钢条问题(rod cutting problem)
- 教师网络计算机研修培训总结,教师网络研修总结
- HTML ===> 向右侧展开div
- 《Mysql是怎样运行的》读书笔记之独立表空间结构
- 陌陌前端面试 - 凉面
- 用emacs的org-mode写日记