![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Go
文章平均质量分 76
NeilLiu200
这个作者很懒,什么都没留下…
展开
-
Go语言野生goroutine的处理
野生goroutine定义在写go代码时,常常需要使用goroutine来执行任务:go func() { fmt.Println("hello") panic("goroutine error")}()一旦造成了panic,那么此时recover是无法被捕获以及解决的,这种情况被我们称作野生goroutine捕获goroutine中的panic我们可以通过定义一个函数来捕获recover,并且执行goroutine方法func main() { Go(func()原创 2021-04-02 16:37:42 · 897 阅读 · 3 评论 -
Go语言常见问题汇总
如果需要声明初始值为零值的变量,应该使用var 关键字;如果提供确切的非零值初始化变量或者使用函数返回值创建变量,应该使用简化变量运算符:=。var i intfmt.Printf("i = %d\n", i)s := 10fmt.Printf("s = %d\n", s)关键字range可以用来迭代数组、字符串、切片、映射和管道。每次迭代返回两个值,第一个值是迭代的元素在切片里的索引位置,第二个值是元素值的一个副本。指针变量可以方便地在函数之间共享数据,使用指针变量可以让函数访问..原创 2021-03-26 10:10:58 · 270 阅读 · 0 评论 -
Go 语言之并发
并发并发是指同时进行多个任务的程序。go语言有两种并发编程的风格:第一种是goroutine和管道(channel),他们支持通信顺序进程(communicating sequential processes)或被简称为CSP,CSP是一个并发的模式,在不同的执行体(goroutine)之间传递值。第二种是共享内存多线程的传统模型。go语言提倡通信共享内存而不是通过共享内存而实现通信。Goroutines在go语言中,每一个并发的执行单元叫作一个goroutine。类似于其他语言的线程,但gorou原创 2021-02-25 23:26:09 · 320 阅读 · 0 评论 -
Go语言之接口
文章目录接口定义实现接口的条件接口值值接收者实现接口指针接收者实现接口一个类型实现多个接口空接口一个包含nil指针的接口不是nil接口类型断言接口定义接口(interface)是一种抽象类型,定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。接口类型具体描述了一系列方法的集合。go语言提倡面向接口编程。接口的定义格式如下type 接口类型名 interface{ 方法名1(参数列表)(返回值列表) ...}例如package iotype Read原创 2021-02-19 14:33:28 · 175 阅读 · 0 评论 -
Go语言之方法
方法文章目录方法方法的定义指针对象方法方法值和方法表达式封装方法的定义go语言中没有明确的构造函数,通常我们这样实现。type Person struct { Name string Age int8}func newPerson(name string, age int8) *Person { return &Person{ Name: name, Age: age, }}p := newPerson("小明", 20)fmt.Printf("%T\n %#原创 2021-02-15 21:22:32 · 238 阅读 · 0 评论 -
Go语言之函数
函数函数可以让我们将一个语句序列打包为一个单元,然后可以从程序中其他地方多次调用。即函数是可重复使用的、用于执行指定任务的代码块。函数声明函数的声明包括函数名、形式参数列表、返回值参数列表及函数体。func 函数名(参数列表)(返回值列表){ 函数体}函数名是由字母、数字和下划线组成,但首位不能使用数字。同一个包中,函数名是唯一的。形式参数列表描述了函数的参数名以及参数类型返回值列表描述了返回值的变量名以及参数类型,当返回一个匿名返回值时,括号可以省略;当没有返回值返回时,返回值原创 2021-02-06 10:42:59 · 209 阅读 · 1 评论 -
Go语言之JSON
JSONJavaScript对象表示法(JSON)是一种用于发送和接收结构化信息的标准协议。其中常用的协议包括JSON、XML、ASN.1,但JSON由于其简洁性、可读性和流行程度是最广泛的一个。在go语言中对这些标准格式的编码和解码都有良好的支持,其中标准库为encoding/json,encoding/xml、encoding/asn1等包提供支持。JSON定义JSON中包括基础数据类型和聚合数据类型。他们是通过JSON数组和对象类型进行递归组合的。基础的JSON类型包括数字、布尔值、字符串。原创 2021-02-02 00:02:26 · 493 阅读 · 0 评论 -
Go语言复合数据类型之结构体
结构体自定义类型和类型别名自定义类型go语言中可以使用自定义类型来定义一个全新的类型,使用type关键字来完成//类型定义type Myint int类型别名类型别名是将一个类型起一个别名,类似于小名,比如byte就是uint8的别名,本质上他们是同一种类型。type byte = uint8type rune = uint32类型别名和自定义类型的区别type custInt inttype aliasInt = intfunc main() { var a custIn原创 2021-01-31 18:34:33 · 530 阅读 · 0 评论 -
Go语言复合数据类型之map
Go语言复合数据类型之map文章目录Go语言复合数据类型之mapmap的定义map的初始化使用内置make函数初始化使用map字面值语法初始化创建指定key/value的mapmap的操作map对值的操作使用delete删除keymap的遍历补充map的定义哈希表是一个无序的key/value对的集合,要求所有的key必须不同,然后通过给定的key可以在O(1)内检索、更新或者删除对应的value。go语言中map就是一个哈希表,其表达形式为map[key] = value ,key在map中是同一原创 2021-01-27 13:45:50 · 392 阅读 · 0 评论 -
Go语言复合数据类型之切片
Go语言复合数据类型之切片文章目录Go语言复合数据类型之切片切片定义切片构造切片的操作切片的赋值append函数copy函数Slice就地修改切片定义切片slice是一个拥有相同类型的可变长度的序列,底层是对数组的引用。切片是由指针、长度和容量构成。指针指向第一个slice元素对应的底层数组的地址(第一个slice元素并不一定是底层数组的第一个元素)长度是slice中元素的个数容量是指从slice第一个元素到底层数组结束位置的长度。内置函数len()和cap()分别返回长度和容量。切片构原创 2021-01-26 17:19:11 · 205 阅读 · 0 评论 -
Go语言复合数据类型之数组
Go语言之基本数据类型之数组文章目录Go语言之基本数据类型之数组数组定义数组初始化数组遍历数组的比较二维数组补充知识点for range遍历字符串数组定义数组是由固定长度的特定类型元素组成的序列,数组的长度是固定的,不允许改变。访问数组可以根据索引下标来访问,索引的范围 0 到 数组长度 左闭右开区间。数组定义时,必须声明数组的长度var aaa [3]int// var 变量名 [数组长度]元素类型数组的长度必须是常量,因为数组长度需要在编译器确定,以下这种定义方式是错误的。var b原创 2021-01-25 14:22:02 · 230 阅读 · 0 评论 -
Go语言之基本数据类型
Go语言之基本数据类型Go语言将数据类型分为四类:基础类型、复合类型、引用类型、接口类型。基础数据类型:数字、字符串、布尔型复合数据类型:数组、结构体引用数据类型:指针、切片、字典、函数、通道,他们都是对程序中一个变量或状态的间接引用,即对引用类型数据的修改会影响所有该引用的拷贝接口类型:是对其他类型行为的抽象和概括整型Go语言提供了有符号和无符号类型的整数运算。按照长度划分:有符号: int8、int16、int32、in64无符号:uint8、uint16、uint32、uint64原创 2021-01-19 00:11:30 · 299 阅读 · 0 评论