golang反射
摘要:要点 1.变量 2.反射 3.结构体反射 4.反射总结以及应用场景 一、变量介绍 1.变量的内在机制 A、类型信息,这部分是元信息,是预定义好的 B、值类型,这部分是程序运行过程中,动态改变的 二、反射介绍 1.反射与空接口 A、空接口可以存储任何类型的变量 B、那么给你一个空接口,怎么知道里面存储
阅读全文
waitGroup的使用
摘要:```go package main import ( "fmt" "sync" "time" ) func main() { var wg sync.WaitGroup //一个没有缓冲区的chan ch := make(chan string) wg.Add(3) go sendData(ch,
阅读全文
golang中的mutex锁
摘要:mutex锁中一种互斥锁,如果有多个goroutine需要对同一变量进行修改则需要对该变量施加mutex锁以实现安全读写。
阅读全文
goroutine和channel
摘要:近期在学习golang的goroutine和channel时候有一些疑惑: 1. 带缓冲的channel和不带缓冲的channel有什么区别? 2. goroutine和主进程的有哪些影响和关系? 3. 多个goroutine的执行顺序是怎么样的? 通过下面的代码我们可以得到答案 第一个例子 1.
阅读全文
如何优雅的关闭Golang Channel?
摘要:Channel关闭原则 不要在消费端关闭channel,不要在有多个并行的生产者时对channel执行关闭操作。 也就是说应该只在[唯一的或者最后唯一剩下]的生产者协程中关闭channel,来通知消费者已经没有值可以继续读了。只要坚持这个原则,就可以确保向一个已经关闭的channel发送数据的情况不
阅读全文
使用context关闭协程以及协程中的协程
摘要:```go package main import ( "sync" "context" "fmt" "time" ) var wg sync.WaitGroup func worker2(ctx context.Context) { LOOP: for { fmt.Printf("worker2\
阅读全文
golang对不同系统的编译
摘要:Golang 支持在一个平台下生成另一个平台可执行程序的交叉编译功能。 Mac下编译 Linux下编译 Windows下编译
阅读全文
reflect
摘要:编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。 也就是说,这类应用通过采用某种机制来实现对自已行为的描述(self representation)和监测(examination), 并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。 每种语
阅读全文
golang结构体、接口、反射
摘要:struct结构体 struct用来自定义复杂数据结构,可以包含多个字段属性,可以嵌套; go中的struct类型理解为类,可以定义方法,和函数定义有些许区别; struct类型是值类型. struct定义 struct使用 下面示例中user1和uesr2为指针类型,访问的时候编译器会自动把use
阅读全文
golang文件操作
摘要:文件读取 封装了文件相关操作 type File File代表一个打开的文件对象 Create采用模式0666(任何人都可以读写,不可执行)创建一个名为name的文件, 如果文件已存在会截断它(为空文件). 如果成功,返回的文件对象可用于I/O;对应的文件描述符具有O_RDWR模式。 如果出错,错误
阅读全文
sqlx使用说明
摘要:sqlx使用指南 参考链接: http://jmoiron.github.io/sqlx/ sqlx是一个go语言包,在内置database/sql包之上增加了很多扩展,简化数据库操作代码的书写 资源 如果对go语言的sql用法不熟悉,可以到下面网站学习: http://go database sq
阅读全文
goroutine
摘要:select: 如果存在多个channel,我们该如何操作? go语言里面提供了一个关键字select,通过select可以监听channel上的数据流动。 select默认是阻塞的,只有当监听的channel中发送或接收可以进行时才会远行,当多个channel都准备好的时候,select是随机选择
阅读全文
生成二维码
摘要:```go package main import ( "bytes" "encoding/base64" "encoding/json" "fmt" "image" "image/color" "image/draw" "image/gif" "image/jpeg" "image/png" "i
阅读全文
密码生成器
摘要:```go package main import ( "flag" "fmt" "math/rand" "time" ) var ( length int charset string ) const ( NUmStr = "0123456789" ChanStr = "ABCDEFGHIJKLM
阅读全文
golang统计出其中英文字母、空格、数字和其它字符的个数
摘要:方法一 通过ASCII码表判断并统计 go package main import ( "fmt" "regexp" ) // 练习四: 统计一个字符串的字母,数字,空格,其他字符个数 func statisticalCharacterNumber(s string) { // 示例字符串 // v
阅读全文
golang fmt占位符
摘要:golang fmt格式“占位符” golang 的fmt 包实现了格式化I/O函数,类似于C的 printf 和 scanf。 定义示例类型和变量 普通占位符 |占位符 | 说明 | 举例 | 输出| | | : | : | : | |%v | 相应值的默认格式。 | Printf("%v", p
阅读全文
golang---map类型
摘要:map 类似其它语言中的哈希表或字典,以key value形式存储数据 key必须是支持==或!=比较运算的类型,不可以是函数、map或slice Map查找比线性搜索快很多,但比使用索引访问数据的类型慢100倍 Map使用make()创建,支持:=这种简写方式 make([keyType]valu
阅读全文
golang切片类型
摘要:切片slice 其本身并不是数组,它指向底层的数组 作为变长数组的替代方案,可以关联底层数组的局部或全部 为引用类型 可以直接创建或从底层数组获取生成 使用len()获取元素个数,cap()获取容量 一般使用make()创建 如果多个slice指向相同底层数组,其中一个的值改变会影响全部 make(
阅读全文