pigff的博客

一个进阶中的程序猿的博客

GO学习笔记——错误处理(22)

C++中通过异常机制来处理一些异常的情况,这是C++错误处理的方式。 GO语言中,有专门的error类型来表示错误,这也是一种内置类型,它一般作为某些函数返回参数的第二个参数,来判断函数的调用是否出错,并可以将出错原因赋值给error类型的变量。 func main() { f,err :...

2018-11-19 09:54:01

阅读数 86

评论数 0

GO学习笔记——defer调用(21)

defer调用也是一种流程控制语句,经常用来调用一些资源处理函数。 defer语句确保被执行的语句具有下面的调用时机 defer调用必须出现在函数内,并且在该函数返回之前才回去执行defer调用的函数  给一个示例来看一下 func testdefer(){ defer fmt.P...

2018-11-07 17:24:52

阅读数 51

评论数 0

GO学习笔记——函数式编程(20)

在C中,我们有函数指针,函数指针可以作为参数传递给一个函数。 但是,在GO中,支持函数式编程,也就是说,它支持下面这个概念 头等函数:可以把函数赋值给变量,也可以把函数作为其他函数的返回值或者参数 所谓的函数是一等公民,也就是这么个意思。 匿名函数  所谓的匿名函数,就是没有名字的函...

2018-11-06 15:03:20

阅读数 56

评论数 0

GO学习笔记——接口(19)

什么是接口? 在面向对象的领域里,接口一般这样定义:接口定义一个对象的行为。接口只指定了对象应该做什么,至于如何实现这个行为(即实现细节),则由对象本身去确定。 在GO语言中,比如说我定义了一个接口download,它内部有一个方法get,任何类型只要定义了这个get方法,就是实现了这个接口。...

2018-11-05 15:20:08

阅读数 55

评论数 0

GO学习笔记——组合(18)

GO只支持封装,不支持继承,那么如果我们想要对其他包上的一些类型进行扩展,比如说在原有结构体上加上一些自己的东西,C++中可以用继承实现,但是GO没有,所以GO引入了组合,用组合来实现继承的功能,同样起到代码复用的效果。 如果我们想在本包中使用别的包中的类型,但又不想使用它的名字,使用别名就可以...

2018-11-02 14:43:00

阅读数 48

评论数 0

GO学习笔记——包和封装(17)

既然GO支持封装,那么相比于C++的三大访问属性:private,protected,public,GO只有private和public,因为protected是因继承而产生的。而C++的访问属性是根据类来说的,在一个类中相当于外界的属性;但是GO中没有类,GO中的访问属性是相对于包来说的,这一章...

2018-11-02 11:32:52

阅读数 76

评论数 0

GO学习笔记——面向对象编程之方法(16)

讲完了结构体,如果要为这个结构体对象设计一些实用的方法,比如对于单链表,有单链表的遍历和反转等,这些方法是如何来定义的呢? C++中,这些方法也一同放在class中定义了,但是GO中不可以,必须在结构体外定义。因此,为了能够对结构体进行上述实用的操作,GO中有了方法这个概念。 方法本质其实就是...

2018-10-29 14:40:16

阅读数 41

评论数 0

GO学习笔记——面向对象编程之结构体(15)

GO是支持面向对象编程的,但是面向对象的三大特性:封装,继承,多态,GO只支持封装,并不支持继承和多态。学过C++的有没有感觉在学继承和多态的时候特别复杂麻烦,那些对象模型特别容易搞混。所以这样设计也是极好的,简化了语言。继承和多态这些功能GO是通过接口来实现的,这在后续会讲到。 也是为了简化,...

2018-10-29 13:28:09

阅读数 37

评论数 0

GO学习笔记——字符和字符串(14)

GO中用string表示字符串,它是一个内置类型,而C++中的string是一个标准类,这是一个区别。因为字符串操作非常多,另外GO中还引入了rune来支持国际化的字符(中文字符等),因此这里单独开一篇文章来将字符和字符串。 先来简单地看一个中英文都有的字符串 func main() { ...

2018-10-29 10:51:40

阅读数 84

评论数 0

GO学习笔记——map(13)

每个语言基本都有类似于map的容器,C++有map和unordered_map,map的底层是红黑树,unordered_map的底层是哈希表。那么GO语言中的map它的底层就是哈希表了。下面来讨论GO语言中的map的使用 定义map 可以用下面的方式直接定义 func main() { ...

2018-10-25 13:50:09

阅读数 73

评论数 0

GO学习笔记——切片的操作(12)

上一篇文章讲完了切片的概念,再来说一下切片的常用操作。 vector中封装了很多对vector的操作,那么Slice是怎么搞定这些操作的呢? 向Slice添加元素(append) 向Slice添加元素使用内置函数append,先来看一下代码 func main() { arr := [...

2018-10-24 12:31:03

阅读数 258

评论数 0

GO学习笔记——切片的概念(11)

数组是不可以调整大小的,所以数组使用起来不够灵活。因此GO语言使用了Slice(切片),切片是数组建立的一种方便、灵活且功能强大的包装。 正因为数组不可以调整大小,使用不够灵活这个缺点,所以在GO语言开发中,用的更多的是Silce,下面来进入Slice的学习。 Slice的定义 先来看一下s...

2018-10-24 10:19:33

阅读数 69

评论数 0

GO学习笔记——数组(10)

今天来看看数组。C/C++还有其他一些语言基本都用方括号 [] 来表示数组,另外C++还有array数组容器以及vector动态顺序表(这其实相当于后面要说到的切片)。 当然了,今天的主题是GO的数组。 GO也是用方括号 [] 来表示数组,先来看下它的一些定义方式 func main() ...

2018-10-22 21:16:44

阅读数 61

评论数 0

GO学习笔记——指针(9)

GO语言也有指针,本质上和C/C++没有差别,但是在用法上有很多差别,GO语言中的指针是弱化版的C/C++指针。 先来看一段简单的代码 func main() { a := 1 b := &a fmt.Println(reflect.TypeOf(b),b,*b...

2018-10-22 15:12:17

阅读数 32

评论数 0

GO学习笔记——函数(8)

GO语言中的函数定义和C++也有一点差异,先来看一下一个简单的函数定义模型 func add(a,b int) int{ return a + b } 还是先说一下几点注意的地方 GO语言中函数定义需要加上关键字func GO中的函数定义和变量定义的格式一样,函数名在前,返回值类型在后...

2018-10-22 13:13:02

阅读数 46

评论数 0

GO学习笔记——GO语言中那些控制语句(7)

if条件语句 先来看一下一个简单的条件语句的模型 a := 1 if a > 0 { fmt.Println("a是大于0的") if a < 4{ fmt.Println(&am...

2018-10-22 10:29:36

阅读数 48

评论数 0

GO学习笔记——GO语言常量与枚举(6)

看完了变量的定义,再来看常量。 GO语言中常量定义使用关键字const,这个关键字倒是和C++相像。 常量的定义方法和变量定义差不多,这里就一笔带过了。   1. 定义一个简单常量,同样可以把它定义成局部变量或者是全局变量 const a int = 5 func main() { ...

2018-10-18 15:23:40

阅读数 190

评论数 0

GO学习笔记——GO语言变量与变量定义(5)

上一篇说完了GO语言的基本数据类型,这一篇就来说说怎么定义各种不同类型的变量吧 GO语言中变量定义需要使用关键字var,并且GO语言中定义变量是和C++定义变量相反的,C++是变量类型在前,变量名在后;而GO是变量名在前,变量类型在后。这是它们之间在定义变量时最明显的不同   1. 只声明不...

2018-10-18 12:34:31

阅读数 275

评论数 0

GO学习笔记——GO基本数据类型(4)

我这边先把GO语言中的数据类型都快速梳理出来,为了和C++有一个对比,有了数据类型,才有后面对变量和常量的一些定义。 整型 序号 类型 描述 1 uint8 无符号8位整型(0-...

2018-10-18 10:44:09

阅读数 113

评论数 0

GO学习笔记——GoLand常用快捷键(3)

GoLand这种大型IDE都有相当多的快捷键,而且他们公司的产品快捷键基本都差不多,网上一找全都是,我这里先百度了一些我可能会用到的快捷键,也是为了之后的使用过程可以更加轻松。 之后我也会在这篇文章中新添加更多的快捷键使用,不断更新吧。 转载出处:GoLand常用快捷键 文件相关快捷键: ...

2018-10-16 15:58:48

阅读数 327

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭