GO语言学习笔记
TLpigff
这个作者很懒,什么都没留下…
展开
-
beego根据数据库模型一键生成models
bee api 项目名-conn="用户名:密码@tcp(IP地址:3306)/数据库名?charset=utf8"原创 2019-10-18 15:39:22 · 3229 阅读 · 0 评论 -
GO学习笔记——面向对象编程之方法(16)
讲完了结构体,如果要为这个结构体对象设计一些实用的方法,比如对于单链表,有单链表的遍历和反转等,这些方法是如何来定义的呢?C++中,这些方法也一同放在class中定义了,但是GO中不可以,必须在结构体外定义。因此,为了能够对结构体进行上述实用的操作,GO中有了方法这个概念。方法本质其实就是一个函数,下面来看看实现细节。方法的定义//定义一个单链表的节点type ListNode...原创 2018-10-29 14:40:16 · 243 阅读 · 0 评论 -
GO学习笔记——切片的概念(11)
数组是不可以调整大小的,所以数组使用起来不够灵活。因此GO语言使用了Slice(切片),切片是数组建立的一种方便、灵活且功能强大的包装。正因为数组不可以调整大小,使用不够灵活这个缺点,所以在GO语言开发中,用的更多的是Silce,下面来进入Slice的学习。Slice的定义先来看一下slice的一个简单的定义func main() { arr := [...]int{0,1,2...原创 2018-10-24 10:19:33 · 716 阅读 · 0 评论 -
GO学习笔记——切片的操作(12)
上一篇文章讲完了切片的概念,再来说一下切片的常用操作。vector中封装了很多对vector的操作,那么Slice是怎么搞定这些操作的呢?向Slice添加元素(append)向Slice添加元素使用内置函数append,先来看一下代码func main() { arr := []int{0,1,2,3,4,5,6} s1 := arr[2:6] s2 := s1[2:4]...原创 2018-10-24 12:31:03 · 2563 阅读 · 0 评论 -
GO学习笔记——函数式编程(20)
在C中,我们有函数指针,函数指针可以作为参数传递给一个函数。但是,在GO中,支持函数式编程,也就是说,它支持下面这个概念头等函数:可以把函数赋值给变量,也可以把函数作为其他函数的返回值或者参数所谓的函数是一等公民,也就是这么个意思。匿名函数 所谓的匿名函数,就是没有名字的函数。这和我们平时所了解的可能不一样,为什么一个函数可以没有名字?但这在函数式编程中,确实是可行的,因为...原创 2018-11-06 15:03:20 · 401 阅读 · 0 评论 -
GO学习笔记——包和封装(17)
既然GO支持封装,那么相比于C++的三大访问属性:private,protected,public,GO只有private和public,因为protected是因继承而产生的。而C++的访问属性是根据类来说的,在一个类中相当于外界的属性;但是GO中没有类,GO中的访问属性是相对于包来说的,这一章就来讲一讲GO中的包,以及包是怎么做到封装的。包其实相当于一个目录,如果我们把所有的源文件写在一个...原创 2018-11-02 11:32:52 · 1321 阅读 · 0 评论 -
GO学习笔记——组合(18)
GO只支持封装,不支持继承,那么如果我们想要对其他包上的一些类型进行扩展,比如说在原有结构体上加上一些自己的东西,C++中可以用继承实现,但是GO没有,所以GO引入了组合,用组合来实现继承的功能,同样起到代码复用的效果。如果我们想在本包中使用别的包中的类型,但又不想使用它的名字,使用别名就可以搞定。如果想要在本包中使用别的包中的类型,同时想在此基础上,添加一些功能和内容,就可以使用组合,下...原创 2018-11-02 14:43:00 · 310 阅读 · 0 评论 -
GO学习笔记——defer调用(21)
defer调用也是一种流程控制语句,经常用来调用一些资源处理函数。defer语句确保被执行的语句具有下面的调用时机defer调用必须出现在函数内,并且在该函数返回之前才回去执行defer调用的函数 给一个示例来看一下func testdefer(){ defer fmt.Println("calling last") fmt.Println("calling first"...原创 2018-11-07 17:24:52 · 308 阅读 · 0 评论 -
GO学习笔记——接口(19)
什么是接口?在面向对象的领域里,接口一般这样定义:接口定义一个对象的行为。接口只指定了对象应该做什么,至于如何实现这个行为(即实现细节),则由对象本身去确定。在GO语言中,比如说我定义了一个接口download,它内部有一个方法get,任何类型只要定义了这个get方法,就是实现了这个接口。不管类型内部怎么定义这个get方法,只要定义了,也就是说外部可以调用这个方法,这就算实现了这个接口。...原创 2018-11-05 15:20:08 · 317 阅读 · 0 评论 -
GO学习笔记——错误处理(22)
C++中通过异常机制来处理一些异常的情况,这是C++错误处理的方式。GO语言中,有专门的error类型来表示错误,这也是一种内置类型,它一般作为某些函数返回参数的第二个参数,来判断函数的调用是否出错,并可以将出错原因赋值给error类型的变量。func main() { f,err := os.Open("test.txt") if err != nil { fmt.Printl...原创 2018-11-19 09:54:01 · 594 阅读 · 0 评论 -
GO学习笔记——面向对象编程之结构体(15)
GO是支持面向对象编程的,但是面向对象的三大特性:封装,继承,多态,GO只支持封装,并不支持继承和多态。学过C++的有没有感觉在学继承和多态的时候特别复杂麻烦,那些对象模型特别容易搞混。所以这样设计也是极好的,简化了语言。继承和多态这些功能GO是通过接口来实现的,这在后续会讲到。也是为了简化,GO中只有struct,没有class,也就是说,GO是通过结构体来实现面向对象的,而不是通过类。...原创 2018-10-29 13:28:09 · 340 阅读 · 0 评论 -
GO学习笔记——字符和字符串(14)
GO中用string表示字符串,它是一个内置类型,而C++中的string是一个标准类,这是一个区别。因为字符串操作非常多,另外GO中还引入了rune来支持国际化的字符(中文字符等),因此这里单独开一篇文章来将字符和字符串。先来简单地看一个中英文都有的字符串func main() { str := "我叫lyb" fmt.Println(len(str))}输出结果9...原创 2018-10-29 10:51:40 · 1156 阅读 · 0 评论 -
GO学习笔记——map(13)
每个语言基本都有类似于map的容器,C++有map和unordered_map,map的底层是红黑树,unordered_map的底层是哈希表。那么GO语言中的map它的底层就是哈希表了。下面来讨论GO语言中的map的使用定义map可以用下面的方式直接定义func main() { m1 := map[string]string{ "January" : "1", "Feb...原创 2018-10-25 13:50:09 · 273 阅读 · 0 评论 -
GO学习笔记——GO语言变量与变量定义(5)
上一篇说完了GO语言的基本数据类型,这一篇就来说说怎么定义各种不同类型的变量吧GO语言中变量定义需要使用关键字var,并且GO语言中定义变量是和C++定义变量相反的,C++是变量类型在前,变量名在后;而GO是变量名在前,变量类型在后。这是它们之间在定义变量时最明显的不同 1. 只声明不定义var a int这个时候,又不一样了。我们没有给a变量初始化,那a的值到底是什么呢?我...原创 2018-10-18 12:34:31 · 1341 阅读 · 0 评论 -
GO学习笔记——GO语言常量与枚举(6)
看完了变量的定义,再来看常量。GO语言中常量定义使用关键字const,这个关键字倒是和C++相像。常量的定义方法和变量定义差不多,这里就一笔带过了。 1. 定义一个简单常量,同样可以把它定义成局部变量或者是全局变量const a int = 5func main() { const b int = 5 fmt.Println(a,b)}2.分组定义常量co...原创 2018-10-18 15:23:40 · 1046 阅读 · 0 评论 -
GO学习笔记——做一场华丽的转型(1)
说实话我是C++的忠实粉丝,但是好像,每一个语言的忠实用户都认为该语言是世界上最好的语言(PHP使用者这个时候就有话说了)。我学了C/C++大概有两年半,从真正开始认真学也就两年时间。我认为C++很好,真的很好,作为一个较老的语言,他的第三方库非常的多,功能也越来越强大,热度始终在编程语言排行版的前三左右。但是我还是觉得,技多不压身。作为主语言,目前还是只会C/C++,其他的Python,Ja...原创 2018-10-16 15:27:14 · 427 阅读 · 2 评论 -
GO学习笔记——GO语言集成工具GoLand(2)
既然开始下定决心要学GO语言了,先从安装做起吧。安装的过程很简单,百度上一搜大把的教程,我这里就不做搬运工了,可以自己去百度上搜怎么安装。不过这里我要说明一下,百度上的教程里的那个环境变量的设置,有一个GOPATH环境变量,这个环境变量其实我们初学者在学基础语法的时候,还用不到这个环境变量,如果不懂的或者是嫌麻烦,可以先不设置,之后在讲到包的概念的时候,会说到这个环境变量,所以先把GO安装...原创 2018-10-16 15:51:17 · 626 阅读 · 0 评论 -
GO学习笔记——GoLand常用快捷键(3)
GoLand这种大型IDE都有相当多的快捷键,而且他们公司的产品快捷键基本都差不多,网上一找全都是,我这里先百度了一些我可能会用到的快捷键,也是为了之后的使用过程可以更加轻松。之后我也会在这篇文章中新添加更多的快捷键使用,不断更新吧。转载出处:GoLand常用快捷键文件相关快捷键:CTRL+E,打开最近浏览过的文件。 CTRL+SHIFT+E,打开最近更改的文件。 CTRL+N...转载 2018-10-16 15:58:48 · 2342 阅读 · 0 评论 -
GO学习笔记——GO语言中那些控制语句(7)
if条件语句先来看一下一个简单的条件语句的模型a := 1if a > 0 { fmt.Println("a是大于0的") if a < 4{ fmt.Println("a是小于4的") }}else if a < 0{ fmt.Println("a是小于0的")}else{ fmt.Println("a是等...原创 2018-10-22 10:29:36 · 247 阅读 · 0 评论 -
GO学习笔记——函数(8)
GO语言中的函数定义和C++也有一点差异,先来看一下一个简单的函数定义模型func add(a,b int) int{ return a + b}还是先说一下几点注意的地方GO语言中函数定义需要加上关键字func GO中的函数定义和变量定义的格式一样,函数名在前,返回值类型在后 函数也是可以不需要返回值的,这就和C++的void返回值类似;同样参数也是可以没有的说一下GO语...原创 2018-10-22 13:13:02 · 251 阅读 · 0 评论 -
GO学习笔记——指针(9)
GO语言也有指针,本质上和C/C++没有差别,但是在用法上有很多差别,GO语言中的指针是弱化版的C/C++指针。先来看一段简单的代码func main() { a := 1 b := &a fmt.Println(reflect.TypeOf(b),b,*b)}执行结果如下*int 0xc04204e080 1由此可见:这个b的类型就是int类型的指针,...原创 2018-10-22 15:12:17 · 200 阅读 · 0 评论 -
GO学习笔记——数组(10)
今天来看看数组。C/C++还有其他一些语言基本都用方括号 [] 来表示数组,另外C++还有array数组容器以及vector动态顺序表(这其实相当于后面要说到的切片)。当然了,今天的主题是GO的数组。GO也是用方括号 [] 来表示数组,先来看下它的一些定义方式func main() { //1. 声明了一个包含5个int的数组,每个元素被赋零值0 var arr1 [5]int...原创 2018-10-22 21:16:44 · 480 阅读 · 0 评论 -
GO学习笔记——GO基本数据类型(4)
我这边先把GO语言中的数据类型都快速梳理出来,为了和C++有一个对比,有了数据类型,才有后面对变量和常量的一些定义。整型 序号 类型 描述 1 uint8 无符号8位整型(0-2^8 - 1),1个字节 2 uint16 ...原创 2018-10-18 10:44:09 · 468 阅读 · 0 评论