随笔分类 - golang
摘要:func main() { reader:=strings.NewReader("今天又是美好的一天hello world一天") for { p:=make([]byte,4) n,err:=reader.Read(p) if err!=nil{ //读到结尾 if err==io.EOF{ fm
阅读全文
摘要:如果多管道,一般使用for循环读取。 package main import "fmt" func main() { ch1:=make(chan int) go func(){ sum:=0 for i := 1; i < 1000; i++ { sum+=i ch1<-sum } close(c
阅读全文
摘要:给定一个x值,初始值为0,让其自加1000后,再自减1000,如未加锁,情况如下: package main import ( "fmt" "sync" ) var wg sync.WaitGroup func main() { fmt.Println("数据竞争与锁") var x int //自
阅读全文
摘要:在Go语言,实现同步的一种方式就是WaitGroup。 package main import ( "fmt" "time" ) func main(){ for i := 0; i < 1000; i++ { go fmt.Println(i) } time.Sleep(time.Second)
阅读全文
摘要:在项目中,我们可能会需要获取一个文件的大小,在Go语言中,有很多方法来获取一个文件的大小 Read字节方式 func main() { file,err:=os.Open("water") if err ==nil { sum := 0 buf:=make([]byte,2014) for { n,
阅读全文
摘要:gorm是一个使用Go语言编写的ORM框架。 它文档齐全,对开发者友好,支持主流数据库.提升开发效率,牺牲执行性能和灵活性,大型项目禁用吧。哈哈哈哈,文档地址:gorm
阅读全文
摘要:快速入门 运行这段代码并在浏览器中访问 http://localhost:8080 package main import "github.com/gin-gonic/gin" func main() { r := gin.Default() r.GET("/ping", func(c *gin.C
阅读全文
摘要:Golang的调度器 谈到Golang的调度器,绕不开的是操作系统,进程和线程这些概念。多个线程是可以属于同一个进程的并共享内存空间,因为多线程 不需要创建新的虚拟空间,所以不需要内存管理单元处理的上下文的切换,线程之间的通信也是基于共享内存进行的,同重量级的进程相比 线程显得比较轻量 虽然线程比较
阅读全文