Go语言从入门到实战项目 go 语言实战

Golang入门到项目实战 | golang并发变成之通道channel Go提供了一种称为通道的机制,用于在goroutine之间共享数据 。当您作为goroutine执行并发活动时,需要在goroutine之间共享资源或数据,通道充当goroutine之间的管道(管道)并提供一种机制来保证同步交换 。
根据数据交换的行为,有两种类型的通道:无缓冲通道和缓冲通道 。无缓冲通道用于执行goroutine之间的同步通信,而缓冲通道用于执行异步通信 。无缓冲通道保证在发送和接收发生的瞬间两个goroutine之间的交换 。缓冲通道没有这样的保证 。
通道由make函数创建,该函数指定chan关键字和通道的元素类型 。
这是创建无缓冲和缓冲通道的代码块:
语法
使用内置函数make创建无缓冲和缓冲通道 。make的第一个参数需要关键字chan,然后是通道允许交换的数据类型 。
这是将值发送到通道的代码块需要使用-运算符:
语法
一个包含5个值的缓冲区的字符串类型的goroutine1通道 。然后我们通过通道发送字符串“Australia” 。
这是从通道接收值的代码块:
语法
【Go语言从入门到实战项目 go 语言实战】 - 运算符附加到通道变量(goroutine1)的左侧,以接收来自通道的值 。
在无缓冲通道中,在接收到任何值之前没有能力保存它 。在这种类型的通道中,发送和接收goroutine在任何发送或接收操作完成之前的同一时刻都准备就绪 。如果两个goroutine没有在同一时刻准备好,则通道会让执行其各自发送或接收操作的goroutine首先等待 。同步是通道上发送和接收之间交互的基础 。没有另一个就不可能发生 。
在缓冲通道中,有能力在接收到一个或多个值之前保存它们 。在这种类型的通道中,不要强制goroutine在同一时刻准备好执行发送和接收 。当发送和接收阻塞时也有不同的条件 。只有当通道中没有要接收的值时,接收才会阻塞 。仅当没有可用缓冲区来放置正在发送的值时,发送才会阻塞 。
实例
运行结果
Golang入门到项目实战 | golang方法go语言没有面向对象的特性,也没有类对象的概念 。但是,可以使用结构体来模拟这些特性,我们都知道面向对象里面有类方法等概念 。我们也可以声明一些方法,属于某个结构体 。
Go中的方法,是一种特殊的函数,定义域struct之上(与struct关联、绑定),被称为struct的接受者(receiver) 。通俗的讲 , 方法就是有接收者的函数 。
语法格式如下:
mytype:定义一个结构体
recv:接受该方法的结构体(receiver)
my_method:方法名称
para:参数列表
return_type:返回值类型
从语法格式可以看出,一个方法和一个函数非常相似,多了一个接受类型 。
实例
运行结果
Golang入门到项目实战 | golang中的if语句go语言中的if语句和其他语言中的类似 , 都是根据给定的条件表达式运算结果来,判断执行流程 。
注意:在go语言中 布尔表达式不用使用括号 。
根据布尔值flag判断
程序运行结果
初始变量可以声明在布尔表达式里面,注意它的作用域
程序运行结果
注意:不能使用0或非0表示真假
go语言if语句使用提示:
go语言中的if else语句可以根据给定条件二选一 。
比较两个数的大小
运行结果
判断一个数是奇数还是偶数
运行结果
判断一个人是否成年
运行结果
特殊写法,在if前面添加执行语句
运行结果
go语言if语句使用提示:
go语言if语句可以进行多重嵌套使用,进行多重判断 。
根据分数判断等级
运行结果
同样也可以写成这样
运行结果
输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母
运行结果
go语言if语句可以嵌套多级进行判断 。
判断三个数的大小
运行结果
判断男生还是女生 , 还有是否成年
运行结果
关于Go语言从入门到实战项目和go 语言实战的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站 。

    推荐阅读