摘要: if 条件语句 func main() { i:=6 if i >10 { fmt.Println("i>10") } else if i>5 && i<=10 { fmt.Println("5<i<=10") } else { fmt.Println("i<=5") } } 注意: if 后的表达 阅读全文
posted @ 2021-08-02 11:55 微客鸟窝 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 值类型、引用类型 1、在Go语言中,值类型和引用类型有以下特点: a、值类型:基本数据类型,int,float,bool,string,以及数组和struct 特点:变量直接存储值,内存通常在栈上分配,栈在函数调用完会被释放 b、引用类型:指针,slice,map,chan,interface等都是 阅读全文
posted @ 2021-08-16 10:42 微客鸟窝 阅读(514) 评论(0) 推荐(0) 编辑
摘要: 什么是指针 我们都知道,程序运行时的数据是存放在内存中的,每一个存储在内存中的数据都有一个编号,这个编号就是内存地址。我们可以根据这个内存地址来找到内存中存储的数据,而内存地址可以被赋值给一个指针。我们也可以简单的理解为指针就是内存地址。 指针的声明和定义 在Go语言中,获取一个指针,直接使用取地址 阅读全文
posted @ 2021-08-15 09:46 微客鸟窝 阅读(297) 评论(0) 推荐(0) 编辑
摘要: 对于并发操作,前面我们已经了解到了 channel 通道、同步原语 sync 包对共享资源加锁、Context 跟踪协程/传参等,这些都是并发编程比较基础的元素,相信你已经有了很好的掌握。今天我们介绍下如何使用这些基础元素组成并发模式,更好的编写并发程序。 for select 无限循环模式 这个模 阅读全文
posted @ 2021-08-14 10:35 微客鸟窝 阅读(188) 评论(0) 推荐(1) 编辑
摘要: 协程如何退出 一个协程启动后,一般是代码执行完毕,自动退出,但是如果需要提前终止怎么办呢? 一个办法是定义一个全局变量,协程中通过检查这个变量的变化来决定是否退出。这种办法须要加锁来保证并发安全,说到这里,有没有想的什么解决方案? select + channel 来实现: package main 阅读全文
posted @ 2021-08-13 11:52 微客鸟窝 阅读(320) 评论(0) 推荐(0) 编辑
摘要: 除了上一节我们介绍的 channel 通道,还有 sync.Mutex、sync.WaitGroup 这些原始的同步机制来,更加灵活的实现数据同步和控制并发。 资源竞争 所谓资源竞争,就是在程序中,同一块内存同时被多个 goroutine 访问。对于这个共享的资源(内存)每个 goroutine 都 阅读全文
posted @ 2021-08-12 09:45 微客鸟窝 阅读(196) 评论(0) 推荐(0) 编辑
摘要: 什么是进程、线程 进程就是一个应用程序的工作空间,比如你打开的QQ,微信,工作空间包含了该程序运行所需的所有资源。而线程是进程中的执行单位,一个进程最少有一个线程。 进程与线程对比 进程是系统资源分配和调度的最小单位 线程是程序执行的最小单位 一个进程由一个或多个线程组成,线程是进程中代码的不同执行 阅读全文
posted @ 2021-08-11 09:29 微客鸟窝 阅读(279) 评论(0) 推荐(0) 编辑
摘要: 接口断言 提到接口断言,我们先回顾下怎么实现接口? 接口的实现者必须是一个具体类型 类型定义的方法和接口里方法名、参数、返回值都必须一致 若接口有多个方法,那么要实现接口中的所有方法 对于空接口 interface{} ,因为它没有定义任何的函数(方法),所以说Go中的所有类型都实现了空接口。 当一 阅读全文
posted @ 2021-08-10 09:38 微客鸟窝 阅读(599) 评论(0) 推荐(0) 编辑
摘要: 错误 在Go语言中,错误并不是非常严重,它是可以预期的,可以返回错误给调用者自行处理。 error 接口 在Go语言中,错误是通过内置的error接口来表示的,它只有一个Error方法来返回错误信息: type error interface { Error() string } 这里演示一个错误的 阅读全文
posted @ 2021-08-07 10:04 微客鸟窝 阅读(509) 评论(0) 推荐(0) 编辑
摘要: 结构体 定义 结构体是种聚合类型,里面可以包含任意类型的值,这些值就是结构体的成员,或成为字段,定义结构体,需要使用 type+struct 关键字组合 type person struct { //人结构体 name string //人的名字 age uint //人的年龄 } type 与 s 阅读全文
posted @ 2021-08-05 20:25 微客鸟窝 阅读(398) 评论(0) 推荐(0) 编辑
摘要: 函数 函数声明 func funcName(params) result { body } 关键字 func 用于声明一个函数 funcName 函数名 params 函数的参数 result 是函数的返回值,可以返回多个返回值,如果没有可以省略。 body 函数体 示例 1. a、b形参类型一致, 阅读全文
posted @ 2021-08-04 11:18 微客鸟窝 阅读(115) 评论(0) 推荐(0) 编辑
/* 看板娘 */