前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Go学习之基础进阶 - 理解篇(三)

Go学习之基础进阶 - 理解篇(三)

作者头像
23号杂货铺
发布2019-09-27 16:34:31
3790
发布2019-09-27 16:34:31
举报
文章被收录于专栏:23号杂货铺23号杂货铺

在《基础篇》和《入门篇》当中,我们已经知道了Golang的基本属性、方法等知识,接下来,在本文当中就详细介绍一下Go中的一些常用操作和语法函数,包含下面几个内容。相信阅读完后续章节的朋友,就能大致对Go语言的项目开发有了一个基础的掌握。

  • 分支
  • 循环
  • 函数
  • 指针
  • 结构体

1、分支

(1) if 语句

语法格式如下:(与java类似,区别在于它的条件不需要括号"()")

示例:

(2)switch 语句

语法格式如下:(与java类似,区别在于Go中不需要像java一样在每一个case当中显式声明break,当找到匹配项时自动跳出)

示例:

注意点:case定义的常量不可以重复,case后可以有多个常量值。另外,case中的表达式是可选的,可以省略。如果该表达式被省略,则被认为是switch true,并且每个case表达式都被计算为true,并执行相应的代码块。

(3)select 语句

select会随机执行一个可运行的case。如果没有case可运行,它将会阻塞,直到有case可运行。通常可以使用在通信之上,比如接收和发送消息,生产者与消费者的关系等等。如果有多个case都可以运行,Select会随机公平地选出一个执行。其他不会执行。记住!其它的是不会执行。

2、循环语句

Golang当中,for是唯一的循环语句,并不像java一样还有while、dowhile等语法,显得更加简单明了。

语法结构:

示例:

其中还有break、continue跳出循环语句的使用,与其它语言类似

另外,Go中还有一个 goto 语句,可以无条件地转移到过程中指定的行

3、函数

我在《入门篇》提到过一个Go语言当中必不可少的函数,就是main函数,所谓函数,就是执行特定任务的代码块,在Go中,函数定义比较有趣的一点就是,它可以有多个返回值,十分方便

(1)语法格式:

示例:(定义两个数交换的函数)

注意:上文当中出现了Go当中一个有趣的标识符,就是空白标识符"_",它的作用是可以代替任何类型的任何值。同时,它的作用还可以被当作一个占位符表示,在后续的函数方法当中不使用其值的情况下,就可以使用"_"来代替。

就像在上面的例子当中求数组[1,2,3]的和时,不需要使用索引的值,就使用了空白标识符

(2) 函数可作为变量

在Go中,函数也是一种变量,我们可以通过type来定义它,在下文介绍的结构体中实例具体阐述。

(3)可变参数

另外,Go同样支持可变参数的传递

示例:(定义一个函数,遍历并输出)

4、指针

在函数当中,我们也听说过值传递和引用传递,在Go中,引入了一个指针的概念。所谓指针,就是指变量在内存当中,是存放于一个地址上的,修改变量实际是修改变量地址处的内存。

传递指针,其实就是引用的传递,那就让我们来看看如何定义指针的吧

语法格式:

示例:

5、结构体

接口

接口,即一组方法签名,当类型为接口中定义的方法进行实现时,就可以称之为实现了一个接口。在java当中我们也有面向对象的概念,这与OOP的概念十分相似,接口指定了类型应该具有的方法,类型决定了如何实现这些方法。

语法结构:

示例:

我们知道,在java当中,有一个类叫做Object,且认为所有的类都继承实现了Object类,作为java当中的顶级存在。在Go中,虽然没有继承这一概念,但同样的,也认为任意的类型都实现了空interface(我们这样定义:interface{}),也就是包含0个method的interface。

注意点:

1、接口对象不能调用实现对象的属性

2、interface可以被任意的对象实现

3、一个对象可以实现任意多个interface

4、interface的变量可以持有任意实现该interface类型的对象

End.....

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-12-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 23号杂货铺 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档