随笔分类 - go语言
摘要:定义 Go 语言中的字符串是一个字节切片。把内容放在双引号""之间,我们可以创建一个字符串。让我们来看一个创建并打印字符串的简单示例。 package main import ( "fmt" ) func main() { name := "Hello World" fmt.Println(name
阅读全文
摘要:什么是Select select 语句用于在多个发送/接收信道操作中进行选择。select 语句会一直阻塞,直到发送/接收操作准备就绪。如果有多个信道操作准备完毕,select 会随机地选取其中之一执行。该语法与 switch 类似,所不同的是,这里的每个 case 语句都是信道操作。 packag
阅读全文
摘要:缓冲信道 非缓冲信道是一个进一个出,再一个进再一个出,信道内是不保存数据的; 缓冲信道是可以很多个依次进去,存储在信道里,然后一个一个的按次序取出来。 package main import "fmt" func main(){ var a chan int = make(chan int,3) a
阅读全文
摘要:什么是信道? 信道可以想像成 Go 协程之间通信的管道。如同管道中的水会从一端流到另一端,通过使用信道,数据也可以从一端发送,在另一端接收。 信道的声明 所有信道都关联了一个类型。信道只能运输这种类型的数据,而运输其他类型的数据都是非法的。 chan T 表示 T 类型的信道。 信道的零值为 nil
阅读全文
摘要:什么是Go协程? Go 协程是与其他函数或方法一起并发运行的函数或方法。Go 协程可以看作是轻量级线程。 与线程相比,创建一个 Go 协程的成本很小。因此在 Go 应用中,常常会看到有数以千计的 Go 协程并发地运行。 package main import ( "fmt" "time" ) fun
阅读全文
摘要:defer 表示延迟调用,即便程序出现严重错误,也会执行 package main import "fmt" func main(){ defer fmt.Println("我是最后执行1") defer fmt.Println("我是最后执行2") // 先执行2再执行1 f1() f2() }
阅读全文
摘要:什么是接口 在面向对象的领域里,接口一般这样定义:接口定义一个对象的行为。接口只指定了对象应该做什么,至于如何实现这个行为(即实现细节),则由对象本身去确定。 接口是一系列方法的集合 例如:鸭子会叫会跑,叫起来像,跑起来像就是鸭子 语法 type 接口名 interface{ 方法一 方法二 } p
阅读全文
摘要:什么是方法? 方法其实就是一个函数,在 func 这个关键字和方法名中间加入了一个特殊的接收器类型。 接收器可以是结构体类型或者是非结构体类型。接收器是可以在方法的内部访问的。 语法 func (a Person) getName() { } //类型为Person,方法是getName 指针接收器
阅读全文
摘要:什么是结构体? 结构体是用户定义的类型,表示若干个字段(Field)的集合。有时应该把数据整合在一起,而不是让这些数据没有联系。这种情况下可以使用结构体。 例如:一个人有名字、性别、年龄 语法 type关键字 结构体名字 struct{} type Person struct { name stri
阅读全文
摘要:什么是指针? 指针是一种存储变量内存地址(Memory Address)的变量。 如上图所示,变量 b 的值为 156,而 b 的内存地址为 0x1040a124。变量 a 存储了 b 的地址。我们就称 a 指向了 b。 三点需注意 1. &取地址符号 2. * 放在类型旁边,表示指向这个类型的指针
阅读全文
摘要:定义 数组是同一类型元素的集合。例如,整数集合 5,8,9,79,76 形成一个数组。Go 语言中不允许混合不同类型的元素,例如包含字符串和整数的数组。(译者注:当然,如果是 interface{} 类型数组,可以包含任意类型) package main import "fmt" func main
阅读全文
摘要:定义 map 是在 Go 中将值(value)与键(key)关联的内置类型。通过相应的键可以获取到值。 定义和初始化第一种方式 package main import "fmt" func main(){ var a map[int]string = make(map[int]string) //
阅读全文
摘要:定义 切片是由数组建立的一种方便、灵活且功能强大的包装(Wrapper)。切片本身不拥有任何数据。它们只是对现有数组的引用。 定义切片第一种方法 package main import "fmt" func main(){ var a = [8]int{1,2,3,4,5,6} var b = a[
阅读全文
摘要:定义 switch 是一个条件语句,用于将表达式的值与可能匹配的选项列表进行比较,并根据匹配情况执行相应的代码块。它可以被认为是替代多个 if else 子句的常用方式。 用法 1.基本用法 package main import "fmt" func main() { a:=10 switch a
阅读全文
摘要:if-else基本用法 if 条件{ else if 条件 }else{ } package main import "fmt" func main() { //if 条件{} 大括号和条件之间不能换行 if a == 90{ fmt.Println("a 是90"); } if a >90{ fm
阅读全文
摘要:一、定义 闭包函数:定义在函数内部,对外部作用域有引用 内层函数 import "fmt" func main(){ } //go中函数内部定义的函数是不能有名的,需要定义匿名函数:没有名字 func test(a int){ func(){ fmt.Println("我是内置函数") }() //
阅读全文
摘要:一、定义 函数是一块执行特定任务的代码。一个函数是在输入源基础上,通过执行一系列的算法,生成预期的输出。 语法 func关键字 函数名(参数1 类型,参数2 类型)(返回值类型){} 使用方法 无参数,无返回值 package main import "fmt" func main(){ test(
阅读全文
摘要:常量 在 Go 语言中,术语"常量"用于表示固定的值,也就是恒定不变的量 同样的,也可以定义字符串常量
阅读全文
摘要:1.bool bool 类型表示一个布尔值,值为 true 或者 false。 package main import "fmt" func main(){ var a bool = true fmt.Println(a) } 2.数字类型 int类型:表示整数 int8 int16 int32 i
阅读全文
摘要:一、什么是变量 变量指定了某存储单元(Memory Location)的名称,该存储单元会存储特定类型的值。在 Go 中,有多种语法用于声明变量。 二、声明单个变量 var name type 是声明单个变量的语法。 package main import "fmt" func main() { v
阅读全文
浙公网安备 33010602011771号