博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
初识 go 语言:语法
阅读量:7224 次
发布时间:2019-06-29

本文共 2178 字,大约阅读时间需要 7 分钟。

目录

前言: go语言系列第二篇,主要讲述go语言的语法,如循环,if判断,swich语句,defer语句,defer栈等,每个语法都对比java中的语法进行了讲解,每个都提供了概念+示例的结合,示例都可直接运行。

本想着将go语言的语法与数据类型写在一章,写完语法之后发现如果在写数据类型的话就文章篇幅就太长了,所以数据类型就放到下一章去写了。
按照系列文章去学习,所有示例都敲一遍的话,系列文章学完,你的go语句也就入门了


语法

for 循环

go语言中只有一种循环结构就是:for 循环,与java中的for循环相似,不同是for 关键词后没有小括号(),大括号{}必须添加。

// 基本结构:for 初始化语句;判定条件;后置语句{      方法体 }

如:

func main() {    for i := 0; i < 10; i++ {        fmt.Println("当前值", i)    }}

for循环中最重要的就是判定条件,一旦条件表达式值为false,则循环迭代终止;

使用for关键词修饰,有判定条件,就可以形成是一个for循环,所以上面的for循环还可以写成这样(也可以后置语句提到判定条件后自己试试效果):

func main() {    i := 0    for i < 10 {        i = i + 1        fmt.Println("当前值", i)    }}

if 语句

Go 的 if 语句与 for 循环类似, 表达式后没有小括号(),大括号{}必须添加。

如:

func main() {    testIf(2)}func testIf(x int) {    if x > 10 {        fmt.Println("say hello")    } else {        fmt.Println("say no")    }}

for循环语句可以有变体,当然if语句也有了:

func main() {    testSimpleIf(2)}func testSimpleIf(x int) {    if y := 9 + x; y > 10 {        fmt.Println("say hello")    } else {        fmt.Println("say no")    }}

if语句中,可以将初始化语句放到判定条件前,只不过变量的作用域只能在if条件中,for循环也是一样,如果初始化语句在for循环中,作用域同样在for循环内。

switch 语句

go 中swich语句就是一系列的 if - else 语句的简写。匹配上条件表达式的值就执行case 语句,否则默认执行default。

与java中的swich语句基本一致,不同点在于每个case 语句中不用在显示的去写break了,Go 自动提供了在每个 case 后添加了 break。

func main() {    testSwich(3)}func testSwich(x int) {    switch x {    case 1:        fmt.Println("1")    case 2:        fmt.Println("2")    default:        fmt.Println("default")    }}

还有一点不同就是:switch 的 case 不用一定是常量,也可以是表达式,所以一连串的 if - else 可以写成这样了。

如:

func testTrueSwich() {    switch {    case 1 > 1:        fmt.Println("1")    case 2 < 3:        fmt.Println("2")    default:        fmt.Println("default")    }}

defer 语句

使用defer修饰的函数会推迟到外层函数返回之后执行;推迟调用的函数其参数会立即求值,但直到外层函数返回后该函数才会被调用。
func main() {    defer fmt.Println("可以你先")    fmt.Println("我先说")}

执行后输出: 我先说 可以你先

defer 栈

defer 栈 顾名思义:就是推迟执行的一系列的函数,将函数按顺序入栈。栈的数据就是先进后出,所以就是以为这先入栈的函数会最后在执行,执行下面的示例看下输出结果,有不明白的也明白了。
func testDefer() {    fmt.Println("开始")    for i := 0; i < 10; i++ {        defer fmt.Println("当前值", i)    }    fmt.Println("结束")}

结束

初识 go 语言系列

  • [x] 初识 go 语言
  • [x] 初识 go 语言:语法
  • [ ] 初识 go 语言:数据类型
  • [ ] 初识 go 语言:方法,接口及并发

关注公众号

关注我的公众号

转载于:https://www.cnblogs.com/cmyxn/p/9276903.html

你可能感兴趣的文章
JavaScript 复习之 Object对象的相关方法
查看>>
JAVA之流程控制语句
查看>>
Spring Boot(1)
查看>>
Winodws 10 美化与调优
查看>>
apache安装及多域名解析及域名代理
查看>>
什么是自动化运维 ? 自动化运维的设计思路以及实战
查看>>
Python练习实例100例(持续更新中)
查看>>
非父组件通信
查看>>
Electron系列文章-主进程与渲染进程
查看>>
高性能缓存服务器 nuster v1.8.8.2 和 v1.7.11.2 发布
查看>>
教你快速入门ES6
查看>>
Python 爬虫十六式 - 第六式:JQuery的假兄弟-pyquery
查看>>
宜昌a货翡翠,包头a货翡翠
查看>>
【微信事业群】趣味面试算法题
查看>>
保守的国美再一次进击社交电商,前途未卜?
查看>>
git
查看>>
Python学习教程(Python学习路线):Python 3—手动创建迭代器
查看>>
说说如何在 Virtual Box 中新建 CentOS 虚拟机
查看>>
Cordova + Vue 实现点击两次退出应用
查看>>
JAVA 多用户商城系统b2b2c-Spring Cloud Stream 介绍
查看>>