教程集 www.jiaochengji.com
教程集 >  Golang编程  >  golang教程  >  正文 7.蛤蟆笔记go语言——if,switch,defer

7.蛤蟆笔记go语言——if,switch,defer

发布时间:2022-03-09   编辑:jiaochengji.com
教程集为您提供7.蛤蟆笔记go语言——if,switch,defer等资源,欢迎您收藏本站,我们将为您提供最新的7.蛤蟆笔记go语言——if,switch,defer资源

<span style="font-size:18px">7.蛤蟆笔记go语言——if,switch,defer</span>

<h1><span style="font-size:18px">if</span></h1>

<span style="font-size:18px">if 语句除了没有了 `( )` 之外(甚至强制不能使用它们),看起来跟 C 或者 Java 中的一样,而 `{ }` 是必须的。</span>

<span style="background:#D9D9D9"><span style="font-size:18px">package main</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">import (</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "fmt"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "math"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">)</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func sqrt(x float64) string {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         if x< 0 {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   returnsqrt(-x) "i"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         }</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         returnfmt.Sprint(math.Sqrt(x))</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func main() {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         fmt.Println(sqrt(2),sqrt(-4))</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="font-size:18px">执行:</span>

<span style="font-size:18px">1.4142135623730951 2i</span>

<span style="font-size:18px">跟 for 一样,`if` 语句可以在条件之前执行一个简单的语句。</span>

<span style="font-size:18px">由这个语句定义的变量的作用域仅在 if 范围之内。</span>

<span style="font-size:18px">(在最后的 return 语句处使用 v 看看。)</span>

<span style="background:#D9D9D9"><span style="font-size:18px">package main</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">import (</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "fmt"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "math"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">)</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func pow(x, n, lim float64) float64 {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         if v :=math.Pow(x, n); v < lim {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   returnv</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         }</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         returnlim</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func main() {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         fmt.Println(</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   pow(3,2, 10),</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   pow(3,3, 20),</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         )</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="font-size:18px">执行结果如下:</span>

<span style="font-size:18px">         920</span>

<span style="font-size:18px">在 if 的便捷语句定义的变量同样可以在任何对应的 else 块中使用。</span>

<span style="background:#D9D9D9"><span style="font-size:18px">package main</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">import (</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "fmt"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "math"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">)</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func pow(x, n, lim float64) float64 {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         if v :=math.Pow(x, n); v < lim {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   returnv</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         } else{</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Printf("%g>= %g\n", v, lim)</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         }</span></span>

<span style="font-size:18px"><span style="background:#D9D9D9">         // </span> <span style="background:#D9D9D9">这里开始就不能使用</span><span style="background:#D9D9D9"> v </span><span style="background:#D9D9D9">了</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         returnlim</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func main() {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         fmt.Println(</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   pow(3,2, 10),</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   pow(3,3, 20),</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         )</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="font-size:18px">执行结果:</span>

<span style="font-size:18px">         27>= 20</span>

<span style="font-size:18px">         920</span>

<h1><span style="font-size:18px">switch</span></h1>

<span style="font-size:18px">一个结构体(`struct`)就是一个字段的集合。</span>

<span style="font-size:18px">除非以 fallthrough 语句结束,否则分支会自动终止。</span>

<span style="font-size:18px">执行:</span>

<span style="background:#D9D9D9"><span style="font-size:18px">package main</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">import (</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "fmt"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "runtime"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">)</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func main() {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         fmt.Print("Goruns on ")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         switchos := runtime.GOOS; os {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         case"darwin":</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Println("OSX.")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         case"linux":</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Println("Linux.")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         default:</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   //freebsd, openbsd,</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   //plan9, windows...</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Printf("%s.",os)</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         }</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="font-size:18px">结果:</span>

<span style="font-size:18px">         Goruns on windows.</span>

<h1><span style="font-size:18px">switch 的执行顺序</span></h1>

<span style="font-size:18px">switch 的条件从上到下的执行,当匹配成功的时候停止。</span>

<span style="font-size:18px">(例如,</span>

<span style="font-size:18px">switch i {</span>

<span style="font-size:18px">case 0:</span>

<span style="font-size:18px">case f():</span>

<span style="font-size:18px">}</span>

<span style="font-size:18px">当 i==0 时不会调用 `f`。)</span>

<span style="font-size:18px">代码:</span>

<span style="background:#D9D9D9"><span style="font-size:18px">package main</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">import (</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "fmt"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "time"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">)</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func main() {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         fmt.Println("When'sSaturday?")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         today:= time.Now().Weekday()</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         switchtime.Saturday {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         casetoday 0:</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Println("Today.")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         casetoday 1:</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Println("Tomorrow.")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         casetoday 2:</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Println("Intwo days.")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         default:</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Println("Toofar away.")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         }</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="font-size:18px">执行:</span>

<span style="font-size:18px">         When'sSaturday?</span>

<span style="font-size:18px">         Toofar away.</span>

<span style="font-size:18px">没有条件的 switch</span>

<span style="font-size:18px">没有条件的 switch 同 `switch true` 一样。</span>

<span style="font-size:18px">这一构造使得可以用更清晰的形式来编写长的 if-then-else 链。</span>

<span style="background:#D9D9D9"><span style="font-size:18px">package main</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">import (</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "fmt"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         "time"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">)</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func main() {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         t :=time.Now()</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         switch{</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         caset.Hour() < 12:</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Println("Goodmorning!")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         caset.Hour() < 17:</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Println("Goodafternoon.")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         default:</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   fmt.Println("Goodevening.")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         }</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="font-size:18px">执行:</span>

<span style="font-size:18px">         Goodevening.</span>

<h1><span style="font-size:18px">defer</span></h1>

<span style="font-size:18px">defer 语句会延迟函数的执行直到上层函数返回。</span>

<span style="font-size:18px">延迟调用的参数会立刻生成,但是在上层函数返回前函数都不会被调用。</span>

<span style="font-size:18px">代码:</span>

<span style="background:#D9D9D9"><span style="font-size:18px">package main</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">import "fmt"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func main() {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         deferfmt.Println("world")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px"> </span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         fmt.Println("hello")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="font-size:18px">执行如下:</span>

<span style="font-size:18px">         hello</span>

<span style="font-size:18px">         world</span>

<h2><span style="font-size:18px">defer 栈</span></h2>

<span style="font-size:18px">延迟的函数调用被压入一个栈中。当函数返回时,会按照后进先出的顺序调用被延迟的函数调用。</span>

<span style="font-size:18px">代码:</span>

<span style="background:#D9D9D9"><span style="font-size:18px">package main</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">import "fmt"</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">func main() {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         fmt.Println("counting")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         for i:= 0; i < 10; i {</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">                   deferfmt.Println(i)</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         }</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">         fmt.Println("done")</span></span>

<span style="background:#D9D9D9"><span style="font-size:18px">}</span></span>

<span style="font-size:18px">执行:</span>

<span style="font-size:18px">counting</span>

<span style="font-size:18px">         done</span>

<span style="font-size:18px">         9</span>

<span style="font-size:18px">         8</span>

<span style="font-size:18px">         7</span>

<span style="font-size:18px">         6</span>

<span style="font-size:18px">         5</span>

<span style="font-size:18px">         4</span>

<span style="font-size:18px">         3</span>

<span style="font-size:18px">         2</span>

<span style="font-size:18px">         1</span>

<span style="font-size:18px">         0</span>

<span style="font-size:18px"> </span>

<span style="font-size:18px"> </span>

<span style="font-size:18px"> </span>

<span style="font-size:18px"> </span>


到此这篇关于“7.蛤蟆笔记go语言——if,switch,defer”的文章就介绍到这了,更多文章或继续浏览下面的相关文章,希望大家以后多多支持JQ教程网!

您可能感兴趣的文章:
7.蛤蟆笔记go语言——if,switch,defer
用于管理iptables的shell脚本一例
js时间函数综合例子(日期计算、字符串转日期等)
go语言学习笔记(第3章)—面向对象编程
Golang 学习笔记:流程控制
12. Go 语言流程控制:defer 延迟语句
MySQL中group_concat函数使用例子
go学习(十二)——Go 语言错误与异常处理机制
php实现简单用户登录功能程序代码
Php入门教程之PHP 运算符用法说明

[关闭]
~ ~