摘要:
调用方式的不同 函数的调用方式:函数名(实参列表)。 方法的调用方式:变量.方法名(实参列表)。 对于普通函数,接收者为值类型时,不能将指针类型的数据直接传递,反之亦然。 对于方法来说,接收者为值类型时,可以直接用指针类型的变量调用方法,反过来同样可以。 总结: 不管调用形式如何,真正决定的是值拷贝 阅读全文
摘要:
基本介绍 golang中的方法是作用在指定的数据类型上的(和数据类型绑定的),因此自定义类型都可以用方法,而不仅仅是struct。 方法的声明和调用 type A struct{ Num int } func(a A) test(){ fmt.Println(a.Num) } func(a A) t 阅读全文
摘要:
结构体的介绍: golang支持面向对象,是基于struct来实现OOP特性的,相当于Java中的class类。 golang去掉了传统的oop语言的继承,方法重载,构造函数和析构函数,隐藏的this指针。 golang仍然有面向对象编程的继承,封装和多态的特性。但是golang的继承没有exten 阅读全文
摘要:
基本语法 var 变量名 map[key-type]value-type 例如 var a map[int]string->key是int类型,value是string类型。 注意:通常key为int,string类型,而slice,map和function不可以作为Key,因为这几个没法用==来判 阅读全文
摘要:
切片的基本介绍: 切片的英文名字是slice,切片是数组的一个引用,因此切片是引用类型,在进行传递时,遵守引用传递的机制。 切片的使用和数组类似,遍历,访问切片元素,切片长度都跟数组是一样的。 切片的长度是可以变化的,因此切片是一个可以动态变化的数组。 切片定义的语法: var 切片名 []类型 比 阅读全文
摘要:
数组 数组是可以存放多个同一类型的数据。在GO中,数组是值类型。也是一种数据结构。 数组的简单案例: func main() { //定义一个数组 var hens [3]float64 //给数组每一个元素赋值 从下标为0开始 共3个元素 hens[0] = 1.0 hens[1] = 2.0 h 阅读全文
摘要:
GO中引入的处理方式为:defer,panic,recover。GO中可以抛出一个panic的异常,然后再defer中通过recover捕获这个异常,然后正常处理。 func test() { //使用defer+recover 捕获异常 test函数出栈后defer修饰的函数会执行 defer f 阅读全文
摘要:
explain中的每个列的信息: SET SESSION optimizer_switch='derived_merge=off'; #关闭mysql5.7新特性对衍生表的合并优化 EXPLAIN SELECT (SELECT 1 FROM actor WHERE id = 1) FROM (SEL 阅读全文
摘要:
两种传递方式: 值传递:基本数据类型int系列,float系列,bool,string,数组,结构体struct。(值类型) 引用传递:指针,slice切片,map,chan管道,interface等都是引用传递。(引用类型) 其实不管是值传递还是引用传递,传递给函数的都是变量的副本,不同的是,值传 阅读全文
摘要:
闭包基本介绍: 闭包就是一个函数和与其相关的引用环境组合的一个整体。 package main import "fmt" func main() { //使用AddUpper函数 //当反复调用f函数,因为n是初始化一次,因此每调用一次就进行累计。 //我们要搞清楚闭包的关键,就是要分析出返回的函数 阅读全文