当前位置: 首页 > news >正文

go学习笔记 炒土豆丝

今天的主菜是土豆,就来个土豆丝吧。我的大致流程如下:
1.挑选白瓤土豆,洗它
2.土豆去皮
3.土豆切片,切丝,丝要粗细均匀
4.清洗几遍土豆丝,去除上面的淀粉,在清水中泡一小会
5.起锅,放适量水,烧开[适量实在是太抽象了]
6.备好葱花、姜丝、蒜、青/红辣椒丝
7.放入土豆丝,焯致八九分熟,或者看到土豆丝表面晶莹剔透,即可捞出放入凉水中
8.起锅,放油,放花椒、姜丝、辣椒丝
9.放入土豆丝快速翻炒
10.放入适量盐,蒜沫,翻炒一下
11.放入适量醋,再翻炒一下
12.出锅盛盘
13.撒上些葱花,开吃

package mainimport ("fmt""math/rand""time"
)// 定义常量,默认清洗时间
const default_wash_second int = 1// 常量,土豆瓤的颜色
const (white  = "WHITE"yellow = "YELLOW"
)/******************************************************************************** 挑选土豆* color 土豆瓤的颜色******************************************************************************/
func select_potato(color string) {fmt.Println("使用的是 [", color, "] 土豆")
}/******************************************************************************** 清洗土豆* sec 清洗时间,单位秒******************************************************************************/
func wash_potato(sec uint) {fmt.Println("正在清洗土豆")time.Sleep(time.Duration(sec) * time.Second)fmt.Println("清洗完毕")
}/******************************************************************************** 去除土豆表皮* sec 清洗时间,单位秒******************************************************************************/
func peel_potato(sec uint) {fmt.Println("正在去除土豆表皮,只是表皮,去除多了会浪费土豆")time.Sleep(time.Duration(sec) * time.Second)fmt.Println("去除土豆表皮完毕")
}/******************************************************************************** 将土豆切丝,土豆丝不是越细越好,而是要粗细均匀,宽厚一致,截面为正方形,* 土豆丝可以轻易捻动* width 土豆丝的宽度及厚度* sec 清洗时间,单位秒******************************************************************************/
func shred_the_potato(width, sec uint) {fmt.Println("正在将土豆切成 [", width, "] mm 厚的薄片")time.Sleep(time.Duration(sec) * time.Second)fmt.Println("切片完成,准备切丝")fmt.Println("正在将土豆片切成 [", width, "] mm 厚的土豆丝")time.Sleep(time.Duration(sec) * time.Second)fmt.Println("土豆丝已切好")
}/******************************************************************************** 清洗土豆丝,清洗的目的是去除其表面的淀粉,这样炒出的土豆丝口感脆爽* 洗致水依然清澈,则可以不再清洗了,times并不是判断是否清洗好的标准* times 清洗次数******************************************************************************/
func wash_potato_shreds(times uint) {var i uint = 0for i < times {fmt.Printf("第[%d]遍清洗\n", i+1)time.Sleep(time.Duration(default_wash_second) * time.Second)i++}fmt.Println("土豆丝已清洗好,浸泡片刻,这水好清澈啊......")
}/******************************************************************************** 取出土豆丝,准备使用******************************************************************************/
func get_potato_shreds() {fmt.Println("沥干水分,取出土豆丝")
}/******************************************************************************** 烧水,准备焯土豆丝用******************************************************************************/
func heat_up_water() {fmt.Println("起锅,放入适量水,直到烧开")
}/******************************************************************************** 趁烧水的空档,准备辅料******************************************************************************/
func prepare_others() {fmt.Println("趁烧水的时间,准备辅料")time.Sleep(time.Duration(default_wash_second) * time.Second)fmt.Println("姜切丝、青红辣椒切丝")time.Sleep(time.Duration(default_wash_second) * time.Second)fmt.Println("切葱花、剁蒜沫")time.Sleep(time.Duration(default_wash_second) * time.Second)fmt.Println("辅料已备好")
}/******************************************************************************** 焯土豆丝******************************************************************************/
func blanch_potato_shreds() {get_potato_shreds()fmt.Println("将土豆丝放入开水中,焯致八分熟\n捞出土豆丝放入凉水中备用")time.Sleep(time.Duration(default_wash_second) * time.Second)
}/******************************************************************************** 炒土豆丝喽******************************************************************************/
func fry_potato_shreds() {fmt.Println("起锅,加入适量油,待油热,加入花椒、姜丝、辣椒丝,煸炒一下")time.Sleep(time.Duration(default_wash_second<<1) * time.Second)get_potato_shreds()fmt.Println("将土豆丝放入锅中,快速翻炒")time.Sleep(time.Duration(default_wash_second<<2) * time.Second)fmt.Println("加入蒜沫、适量盐,翻炒一下")time.Sleep(time.Duration(default_wash_second<<1) * time.Second)fmt.Println("加入适量醋,翻炒一下")time.Sleep(time.Duration(default_wash_second) * time.Second)if 0 == get_rand_number() {fmt.Println("出锅盛盘,撒上些葱花,开始享用啦")} else {fmt.Println("没控制好火候,炒糊啦!吃还是不吃,这是个问题啊")}time.Sleep(time.Duration(default_wash_second<<2) * time.Second)
}/******************************************************************************** 获取炒制成功或失败的标志******************************************************************************/
func get_rand_number() int {my_rand := rand.New(rand.NewSource(time.Now().UnixNano()))return my_rand.Int() % 2
}/******************************************************************************** 炒好菜即刷锅,还是吃过菜后刷,好纠结啊******************************************************************************/
func clear() {fmt.Println("不要忘记刷锅 -*-_-*-")
}/******************************************************************************** 制作流程******************************************************************************/
func cook() {var sec uint = 1var width, times = uint(3), uint(4)select_potato(white)wash_potato(sec)peel_potato(sec)shred_the_potato(3, sec)wash_potato_shreds(4)heat_up_water()prepare_others()blanch_potato_shreds()fry_potato_shreds()clear()
}/******************************************************************************** guess what******************************************************************************/
func main() {cook()
}

烹饪这道菜,我至少学会了如何使用 go 的标识符,变量、常量、注释、运算符及函数等。接下来做个总结:
[]:很大部分来自官网,感兴趣的可以去逛逛。
通过前面hello world那篇简单的入门,我们知道第一行中的 package 是用来定义包的。

注释

注释主要起说明作用。好的注释可以方便别人及自己理解程序。
go 的注释有两种,分别为 Line comments(//) 和 General comments(/* */)

注释描述
Line comment// 开始到当前行结束
General comment/* 开始,到第一个 */ 结束

可以看到,go 与 C(C99)/C++ 中的注释风格是一致的。

示例

	// 这是一个Line comment/* 这是一个general comment,但是这个注释与行注释的表现是一样的 *//* 这也是一个general comment,它的表现就和行注释不一样了 */

标识符

标识符,用来给程序中的实体命名。比如对变量,函数,结构体等命名,说白了就是给不同类型的变量起个唯一能标识它们的名字,仅此而已。
go 中合法的标识符,由一到多个字母、数字、下划线组成,且首字母不能为数字。注意,这里的字母是Unicode字母,即汉字可以作为变量名,但最好还是使用英文字符。

除了 go 使用 Unicode 字符作为标识符外,其他规则与 C/C++ 是一致的。

关键字

说到标识符,就不能不提关键字,关键字是 go 预先定义好的标识符,我们只能使用它们,而不能将它们用作自己的标识符。

breakdefaultfuncinterfaceselect
casedefergomapstruct
chanelsegotopackageswitch
constfallthroughifrangetype
continueforimportreturnvar

结合着C/C++,Java,Python等,也就只有几个别的关键字没见过了,对 go 的恐惧一下子就减少了很多。

除了上面的 25 个关键字外,go 还预字义了以下的标识符,它们是全局的,仔细看一下,是不是很多也不陌生。
Types:(21个)

boolbytecomplex64complex128errorfloat32float64
intint8int16int32int64runestring
uintuint8uint16uint32uint64uintptr

Constants:(3个)

truefalseiota

Zero value:(只此一个)

nil

Functions:(15个)

appendcapclosecomplexcopydeleteimaglen
makenewpanicprintprintlnrealrecover

感觉有些多且乱?没关系,多见几次就熟悉它们了。

http://www.lryc.cn/news/145580.html

相关文章:

  • FPGA VR摄像机-拍摄和拼接立体 360 度视频
  • vue集成mars3d后,basemaps加不上去
  • 油管视频直接生成PPT的AI工具!剖析c.ai和Pi的用户需求;独立创业者的操作指南;广告大佬的三个AI绘画实战 | ShowMeAI日报
  • WebSocket- 前端篇
  • 如何在 Python 中将图像转换为 PDF
  • 使用python编写脚本测试目标主机的TCP端口连通性
  • 华为云云服务器评测|基于华为云云耀云服务器L实例开展性能评测,例如 MySQL、Clickhouse、Elasticsearch等等
  • Git分布式版本控制系统与github
  • 基于Java+SpringBoot+Vue前后端分离中国陕西民俗网设计和实现
  • CSS3D+动画
  • list对象中如何根据对象中某个属性去重使用Java8流实现
  • 2023 在Windows上的安装Faiss-GPU(使用anaconda)
  • HTML及CSS入门及精通
  • frp实现二级代理
  • Vue组件设置背景色
  • Java+Github+Jenkins部署
  • vue使用命令npm install 报错 cb() never called!
  • 什么是LatexEasy及其在数学排版中的作用
  • axios 和fetch的取舍,以及比较
  • K-Means(K-均值)聚类算法理论和实战
  • Python-pyqt不同窗口数据传输【使用静态函数】
  • 百度垂类离线计算系统发展历程
  • ubuntu 安装 指定版本:nodejs
  • 16.CSS菜单悬停特效
  • 恒运资本:市盈率怎么算?
  • Docker运维中常见错误以及解决方法汇总1
  • Maven - 使用maven-release-plugin规范化版本发布
  • 2023.8.29 关于性能测试
  • 基于MATLAB的径向基函数插值(RBF插值)(一维、二维、三维)
  • flume拦截器