随笔分类 -  Golang

摘要:一、冒泡排序 二、选择排序 三、插入排序 四、快速排序 阅读全文
posted @ 2019-10-06 11:05 就俗人一个 阅读(338) 评论(0) 推荐(0)
摘要:代码: package main import ( "fmt" "sync" ) type Singleton struct{} var singleton *Singleton var once sync.Once func GetSingletonObj() *Singleton { once. 阅读全文
posted @ 2019-06-18 19:48 就俗人一个 阅读(1607) 评论(0) 推荐(0)
摘要:一、通过反射获取类型信息 在 Go 程序中,使用 reflect.TypeOf() 函数可以获得任意值的类型对象(reflect.Type),程序通过类型对象可以访问任意值的类型信息。 package main import ( "fmt" "reflect" ) func test1() { va 阅读全文
posted @ 2019-06-04 22:09 就俗人一个 阅读(426) 评论(0) 推荐(0)
摘要:go test go test 包名 go test -v // 参数 -v 可用于打印每个测试函数的名字和运行时间 go test -v -run="Add|Mul" // 参数 -run 对应一个正则表达式,只有测试函数名被它正确匹配的测试函数才会被 go test 测试命令运行 go test 阅读全文
posted @ 2019-06-02 20:48 就俗人一个 阅读(781) 评论(0) 推荐(0)
摘要:1. 向关闭的channel发送数据,会导致panic 2. v, ok <- ch; ok 为 bool 值,true 表示正常接收,false 表示通道关闭 3. 所有的 channel 接收者都会在 channel 关闭时,立刻从阻塞等待中返回且上述 ok 值为 false。 这个广播机制常被 阅读全文
posted @ 2019-05-31 20:32 就俗人一个 阅读(368) 评论(0) 推荐(0)
摘要:一、示例 package main import ( "encoding/json" "fmt" ) type Person struct { Name string `json:"name"` Age int `json:"age"` Salary float64 `json:"salary"` 阅读全文
posted @ 2019-05-31 00:11 就俗人一个 阅读(3008) 评论(0) 推荐(0)
摘要:一、Low B 方式 使用 go build -o test.exe main.go 命令生成 test.exe 可执行文件,再使用 test.exe 输入如下内容: 二、高级方式 如像 mysql 那样:mysql -u root -p 123456,可以指定输入内容,输入顺序可变。 flag包实 阅读全文
posted @ 2019-05-30 22:46 就俗人一个 阅读(14686) 评论(1) 推荐(2)
摘要:一、打开文件和关闭文件 os包File结构体的两个方法: Open打开一个文件用于读取。如果操作成功,返回的文件对象的方法可用于读取数据;对应的文件描述符具有O_RDONLY模式。如果出错,错误底层类型是*PathError。 Close关闭文件f,使文件不能用于读写。它返回可能出现的错误。 imp 阅读全文
posted @ 2019-05-30 20:11 就俗人一个 阅读(2660) 评论(0) 推荐(0)
摘要:一、基本介绍 类型断言:由于接口是一般类型,不知道具体类型,如果要转成具体类型,就需要使用类型断言。 如果希望将一个空接口类型重新转换成对应的类型,那么需要使用类型断言,能转换成功是因为这个空接口原先是指向这个类型的。 二、带检测的类型断言 在进行类型断言时,如果类型不匹配,就会报 panic,因此 阅读全文
posted @ 2019-05-29 19:24 就俗人一个 阅读(1071) 评论(0) 推荐(0)
摘要:一、感受接口 type Usb interface { Connect() Disconnect() } // 手机 type Phone struct {} // 相机 type Camera struct {} // 计算机 type Computer struct {} // 手机实现接口所有 阅读全文
posted @ 2019-05-28 21:02 就俗人一个 阅读(346) 评论(0) 推荐(0)
摘要:一、基本介绍 在某些情况下,我们需要定义方法。比如 Person 结构体,除了有一些字段外(姓名、年龄...),还可以有一些行为动作(吃、唱歌...),这就需要用方法才能实现。 Go中的方法是作用在指定的数据类型上的(即:和指定的数据类型绑定),因此自定义类型,都可以有方法,而不仅仅是 struct 阅读全文
posted @ 2019-05-27 23:13 就俗人一个 阅读(215) 评论(0) 推荐(0)
摘要:一、使用方式 方式3和方式4返回的是:结构体指针,编译器底层对 p.Name 做了转化 *(p).Name,方便程序员使用。 二、结构体中的指针、slice、map的默认值都是nil,即还没分配空间 三、结构体的tag struct的每个字段上,可以写上一个tag,该tag可以通过反射机制获取,常见 阅读全文
posted @ 2019-05-27 13:33 就俗人一个 阅读(298) 评论(0) 推荐(0)
摘要:一、map的创建方式 二、map的增删改查 三、map的遍历 四、map 切片 切片的数据类型如果是map,则我们称为 slice of map,map 切片,这样map个数就可以动态变化了。 五、总结 map的容量满后,再增加元素,会自动扩容,并不会panic,也就是说map能动态地增长键值对; 阅读全文
posted @ 2019-05-27 00:31 就俗人一个 阅读(181) 评论(0) 推荐(0)
摘要:package main import "fmt" func BinarySearch(arr *[5]int, leftIndex int, rightIndex int, findValue int) { // 判断leftIndex是否大于rightIndex if leftIndex > rightIndex { fmt.Println("找不到...") return... 阅读全文
posted @ 2019-05-26 23:57 就俗人一个 阅读(370) 评论(0) 推荐(0)
摘要:一、切片创建方式 方式1与方式2的区别: 方式1是直接引用数组,这个数组是事先存在的,程序员是可操作的; 方式2是通过make来创建切片,make会创建一个数组,而切片就是引用这个数组,这个数组是由切片在底层进行维护,程序员不可操作。 二、切片的添加操作 三、切片的拷贝操作 四、string与sli 阅读全文
posted @ 2019-05-26 23:17 就俗人一个 阅读(213) 评论(0) 推荐(0)
摘要:数组属于值类型,在默认情况下是值传递,因此会进行值拷贝。如果想在其他函数中,去修改原来的数组内容,可以使用引用传递方式(指针方式),如下: 阅读全文
posted @ 2019-05-25 00:17 就俗人一个 阅读(382) 评论(0) 推荐(0)
摘要:在默认情况下,当程序发生错误(panic)后,程序就会退出(崩溃),所以我们希望,当程序发生错误后,可以捕获到错误,并进行处理,保证程序可以继续执行。比如捕获到错误后,打入日志或给管理员一个提示(邮件、短信等),一遍后续修复。 使用 defer + recover 来处理错误: 自定义错误: err 阅读全文
posted @ 2019-05-24 23:51 就俗人一个 阅读(388) 评论(0) 推荐(0)
摘要:闭包就是一个函数和与其相关的引用环境组合的一个整体(实体)。 另一个示例: 显然如果使用传统的方法,也可以轻松实现这个功能,但是传统方法需要每次都传入后缀名,而闭包则可以保留上次引用的某个值,只需传入一次就可反复使用,这就是区别。 阅读全文
posted @ 2019-05-24 23:29 就俗人一个 阅读(180) 评论(0) 推荐(0)
摘要:一、内置函数 二、new和make的区别 阅读全文
posted @ 2019-05-13 01:17 就俗人一个 阅读(162) 评论(0) 推荐(0)
摘要:一、函数可赋值给一个变量 示例1: 示例2: 示例3:示例2也可以写成如下,示例2中为什么使用type自定义类型?这样可以让函数没那么繁琐,更简洁。 二、可变参数 注意:其中args是一个slice,我们可以通过args[index]依次访问所有参数,通过len(args)来判断传递参数的个数。 示 阅读全文
posted @ 2019-05-12 21:59 就俗人一个 阅读(449) 评论(0) 推荐(0)