摘要:
一、Go语言中Goroutine的基本原理 Go语言里的并发指的是能让某个函数独立于其他函数运行的能力。 Go语言的goroutine是一个独立的工作单元, Go 语言的并发同步模型来自一个叫作通信顺序进程(Communicating Sequential Processes,CSP)的范型(par 阅读全文
摘要:
Go语言公开或未公开的标识符的基本概念 Go语言支持从包里公开或者隐藏标志符,通过这个特性,可以让用户按照自己的规则控制标识符的可见性。 Go语言中的可见性,是通过声明类型的大小写来进行区别的。 例如下面的代码 这里 alertCounter 就是外部不可见的, 此时如果在main包中的main方法 阅读全文
摘要:
一、什么是嵌入类型 先看如下代码: 可以看到admin结构中的一个成员是user,那么admin中就嵌入了user类型。 admin也叫做外部类型 user也叫做内部类型 二、外部类型和内部类型之间的关系和机制 如上代码,实现了一个方法notify(),接收者是 *user。 main函数中定义了一 阅读全文
摘要:
一、接口的定义和好处 我们都知道接口给类提供了一种多态的机制,什么是多态,多态就是系统根据类型的具体实现完成不同的行为。 以下代码简单说明了接口的作用 ①注意下 http.Get(os.Args[1]) 这里他的返回值r是一个Response对象的指针,也就是请求的结果 做过web开发的都知道,下面 阅读全文
摘要:
如果给这个类型增加或者删除某个值,是要创建一个新值,还是要更改当前的值? 如果是要创建一个新值,该类型的方法就使用值接收者。 如果是要修改当前值,就使用指针接收者。 这个答案也会影响程序内部传递这个类型的值的方式:是按值做传递,还是按指针做传递。 保持传递的一致性很重要。 一、内置类型 字符串(st 阅读全文
摘要:
init函数会在main函数执行之前进行执行、init用在设置包、初始化变量或者其他要在程序运行前优先完成的引导工作。 举例:在进行数据库注册驱动的时候。 这里有init函数 package postgres 这里是main函数 可以看到这里main函数中使用看sql.Open 就是得益于上面的in 阅读全文
摘要:
结合这个例子分析一下 结果: 结合以往C语言的基础,画了一张图来解释为什么会有上面这些值的出现。先查看下Go中的这两个运算符是啥吧。 ①对于所有带a的结果 var a int = 1 定义了一个变量a值为1,如下图所示: &a就是这个存放a变量值的地址 *&a 就是指向&a的一个指针,*&a = a 阅读全文
摘要:
Go语言没有继承、构造函数和析构函数等概念,但是它是面向对象的。 .net中类型系统分为值类型和引用类型,两种转换需要进行装箱和拆箱,都是继承自Object类型 Go语言大多数类型都是值类型,需要的话可以给任何类型增加功能 1.为类型添加方法 C++等语言的面向对象都相当于C语言的一个语法糖 下面看 阅读全文
摘要:
1.函数的声明定义 有意思的是Go语言的返回值可以有多个,并且放在了参数列表后面,而C#等都是在函数名之前,也没有关键字。 2.函数的调用 3.函数编写的原则 很好奇为什么没有public private等关键字,那函数怎么才能定义为公用和私有呢? Go语言有这样的规则:小写字母开头的函数只在本包内 阅读全文
摘要:
1.条件语句 几个注意点和C#不一样的。 ① 条件语句不需要使用括号将条件包含起来 a<5 ,C#必须有() ②无论语句体内有几条语句,花括号{}都是必须存在的;C#如果只有一条语句可以省略{} ③左花括号{必须与if或者else处于同一行 C#的{}是换行的 ④在有返回值的函数中,不允许将“最终的 阅读全文