随笔分类 - go语言学习之路
学习go语言
摘要:上面的程序定义了一个结构体 Square 和一个接口 Shaper,接口有一个方法 Area()。 在 main() 方法中创建了一个 Square 的实例。在主程序外边定义了一个接收者类型是 Square 方法的 Area(),用来计算正方形的面积:结构体 Square 实现了接口 Shaper
阅读全文
摘要:package main import "fmt" type testInt func(int) bool // 声明了一个函数类型 func isOdd(integer int) bool { if integer%2 == 0 { return false } return true } func isEven(integer int) bool { if integer%...
阅读全文
摘要:make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。 内建函数new本质上说跟其他语言中的同名函数功能一样:new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。用Go语言的术语说,它返回了一个指针,指向新分配的类型T的零
阅读全文
摘要:当用post请//生成client 参数为默认
阅读全文
摘要:两个时间戳的计算用ParseInLocation,得到两个Time类型,再用Unix()方法相减,得到时间差
阅读全文
摘要:创建一个结构体,其结构体中的变量是我们要返回的数据,在DB.Raw方法中写我们的sql语句和占位符参数,通过Scan方法把sql返回的数据放入我们的结构体中,结构体的变量名称和sql返回的字段名一致
阅读全文
摘要:在主程序启动的时候开一个goroutine作为消费者,用管道连接生产者和消费者,消费者处于无限循环,从管道中获取channel传过来定时event 注意:channel在消费者创建的时候就连通生产者和消费者 结构图大体如上 消费者代码: 消费者处于无限循环,在循环中拿到Eventchan传过来的数据
阅读全文
摘要:如果想知道当前的内存状态,可以使用: 如果需要在一个对象 obj 被从内存移除前执行一些特殊操作,比如写到日志文件中,可以通过如下方式调用函数来实现: runtime.SetFinalizer(obj, func(obj *typeObj)) func(obj *typeObj) 需要一个 type
阅读全文
摘要:协程Coroutine 轻量级”线程“ 非抢占式多任务处理,由协程主动交出控制权(如果程序中间没有print,程序会一直霸占着调度器) 编译器/解释器/虚拟机层面的多任务 多个协程可能在一个或多个线程上运行 goroutine可能的切换点 1.I/O,select 2.channel 3.等待锁 4
阅读全文
摘要:duck typeing 隐式的实现接口的方法就等于实现了接口 main函数 实现接口一 实现接口二(拿下慕课网首页) Go语言里面有一个语法,可以直接判断是否是该类型的变量: value, ok= element.(T),这里value就是变量的值,ok是一个bool类型,element是inte
阅读全文
摘要:go语言中首字母大写表示public go语言中首字母小写表示private 结构定义的方法必须放在同一个包内 一个目录只能放一个包 如何扩充系统的类型或别人的类型: 1.定义别名 2.使用组合 使用组合 目录结构: 入口:entry.go 函数体:node.go 定义别名 函数体:queue.go
阅读全文
摘要:面向对象:go语言仅支持封装不支持继承和多态 所以go语言没有class,只有struct(结构体) 无论地址还是结构本身,一律用 . 来访问成员 go语言编译器可以自动区分是值传递还是指针传递,值传递不会改变原值,指针传递会复制指针地址 要改变内容必须使用指针接收者,结构过大也考虑用指针接收者,如
阅读全文
摘要:rune相当于go的char 使用range遍历pos,rune对 使用utf8.RuneCountInString(s)获得字符数量 使用len获得字节长度,使用[]byte获得字节 一般把字节转成[]rune,更加容易操作
阅读全文
摘要:go语言中map使用哈希表,必须可以比较相等 除了slice,map,function的内建类型都可以作为key Struct类型不包括上述字段,也可作为key map中的key是无序的
阅读全文
摘要:go语言中数组是值类型 [10]int 和 [20]int 是不同类型,不能用作参数传递 调用func f(arr [10]int)会拷贝数组 go语言一般不用数组用切片slice
阅读全文
摘要:值传递:相当于在内存中拷贝一分变量出来,拷贝变量的改变对原变量不影响 引用传递:直接引用内存中的变量,会被改变 c,c++值传递和引用传递都有 Java,python多用引用传递 go语言指针简单之处:不能运算 go语言只有值传递一种方式,go语言用值传递和指针的方式来模拟引用传递。(当用指针的时候
阅读全文
摘要:函数语法要点 返回值类型写在最后面 可返回多个值 函数可作为参数 没有默认参数,可选参数,只有可变参数列表(...int) 闭包函数保存并积累其中的变量的值,不管外部函数退出与否,它都能够继续操作外部函数中的局部变量。 输出: 1 - 21 - 321
阅读全文
摘要:以上是条件语句 if条件里可以定义变量 switch不需要break,也可以直接switch多个条件 以上是循环语法 for的条件里不需要括号,可以省略初始条件,结束条件,递增表达式(亦可以全部省略,为死循环)
阅读全文
浙公网安备 33010602011771号