随笔分类 - go
摘要:字符串转时间一定要通过 time.ParseInLocation 不能直接用Parse todayZero, _ := time.ParseInLocation("2006-01-02", "2019-01-01 15:22:22" time.Local) 如果用了Parse,二者就会存在8小时时间
阅读全文
摘要:float32 和 float64# Go语言中提供了两种精度的浮点数 float32 和 float64。 float32,也即我们常说的单精度,存储占用4个字节,也即4*8=32位,其中1位用来符号,8位用来指数,剩下的23位表示尾数 float64,也即我们熟悉的双精度,存储占用8个字节,也即
阅读全文
摘要:var a uint = 1 b := strconv.Itoa(int(a)) c := string(b) d := string(a) fmt.Println(c) 使用strconv的Itoa方法先将uint转换成int类型,再将int类型转换成string。
阅读全文
摘要:文章目录什么是GoPath?什么是GoModule?GoModule的设置GoModule无法下载国外的依赖包问题在Golang中,有两个概念非常容易弄错,第一个就是GoPath,第二个则是GoModule,很多初学者不清楚这两者之间的关系,也就难以清晰地了解项目的整体结构,自然也就难以编写结构清晰
阅读全文
摘要:最近在解析 Go 的日期数据格式时(mysql 的 datetime 类型)时遇到个问题,在网上搜了很多方案都试了以后发现不可行,于是自己尝试解决后将解决方案发布出来。 Go 自身的 time.Time 类型默认解析的日期格式是 RFC3339 标准,也就是 2006-01-02T15:04:05Z
阅读全文
摘要:一般go get私有仓库时会出现如下错误: build XXXXXXXXXX/cmd/main: cannot load XXXXXXXXXXX: unrecognized import path "XXX" (https fetch: Get https://XXXX?go-get=1: x509
阅读全文
摘要:在微服务中服务间依赖非常常见,比如评论服务依赖审核服务而审核服务又依赖反垃圾服务,当评论服务调用审核服务时,审核服务又调用反垃圾服务,而这时反垃圾服务超时了,由于审核服务依赖反垃圾服务,反垃圾服务超时导致审核服务逻辑一直等待,而这个时候评论服务又在一直调用审核服务,审核服务就有可能因为堆积了大量请求
阅读全文
摘要:简介 Go 的内建 map 是不支持并发写操作的,原因是 map 写操作不是并发安全的,当你尝试多个 Goroutine 操作同一个 map,会产生报错:fatal error: concurrent map writes。 因此官方另外引入了 sync.Map 来满足并发编程中的应用。 sync.
阅读全文
摘要:有的小伙伴没留意过 Go map 输出顺序,以为它是稳定的有序的;有的小伙伴知道是无序的,但却不知道为什么?有的却理解错误?今天我们将通过本文,揭开 for range map 的 “神秘” 面纱,看看它内部实现到底是怎么样的,输出顺序到底是怎么样? 原文地址:为什么遍历 Go map 是无序的?
阅读全文
摘要:之前我们谈过,在Go语言中的引用类型有:映射(map),数组切片(slice),通道(channel),方法与函数。起初我一直认为,除了以上说的五种是引用传递外,其他的都是值传递,也就是Go语言中存在值传递与引用传递,但事实真的如所想的这样吗? 我们知道在内存中的任何东西都有自己的内存地址,普通值,
阅读全文
摘要:package main package main import ( "fmt" "reflect" ) func main() { var a interface{} = false aa := &a vi := reflect.ValueOf(*aa) fmt.Printf("sdsd = %+
阅读全文
摘要:方法是特殊的函数,定义在某一特定的类型上,通过类型的实例来进行调用,这个实例被叫接收者(receiver)。 函数将变量作为参数:Function1(recv) 方法在变量上被调用:recv.Method1() 接收者必须有一个显式的名字,这个名字必须在方法中被使用。 receiver_type 叫
阅读全文
摘要:Update方法 更新数据使用Update方法,Update方法的第一个参数为需要更新的内容,可以为一个结构体指针或者一个Map[string]interface{}类型。当传入的为结构体指针时,只有非空和0的field才会被作为更新的字段。当传入的为Map类型时,key为数据库Column的名字,
阅读全文
摘要:package main import "fmt" /*slice 遍历删除示例*/ func main() { //定义一个数字切片 ageList := []int{1, 3, 7, 7, 8, 2, 5} //遍历删除6以下的 for i := 0; i < len(ageList); { i
阅读全文
摘要:1. 什么是协程?协程,又称微线程,纤程。英文名Coroutine。对于进程、线程,都是有内核进行调度,有CPU时间片的概念,进行抢占式调度。协程的调用有点类似子程序,但是和子程序相比,协程有挂起的概念,协程可以挂起跳转执行其他协程,合适的时机再跳转回来。goroutine使用方式非常的简单,只需使
阅读全文
摘要:new 关键字只分配内存,当我们想要获取指向某个类型的指针时可以使用 new ;而 make 关键字的主要作用是初始化内置的数据结构,也就是 slice、map 和 channel 的初始化。具体如下:new// The new built-in function allocates memory.
阅读全文
摘要:重复解锁引起panic mutex 结构 type Mutex struct { state int32 sema uint32 } Mutex.state 表示互斥锁的状态,比如是否被锁定 Mutex.sema 表示信号量,协程阻塞等待该信号量,解锁的协程释放信号量从而唤醒等待信号量的协程 Mut
阅读全文
摘要:go get cannot load github.com/google/uuid: module github.com/google/uuid: Get https://proxy.golang.org/github.com/google/uuid/@v/list: dial tcp 216.58
阅读全文
摘要:channels 是一种 类型 安全的消息队列,充当两个 goroutine 之间的 管道,将通过它同步的进行任意资源的交换。chan 控制goroutines 交互的能力从而创建了 Go 同步机 制。当创建的 chan 没有容量时,称为无缓冲通道。 反过来,使用容量创建的 chan 称为缓冲通道。
阅读全文
摘要:一. GoroutineGoroutine是Golang2个核心的设计之一,Goroutine在Golang里面指的是协程。我们知道线程属于系统层面,通常来说创建一个新的线程会消耗较多的资源且管理不易。而Goroutine就像轻量级的线程,但我们称其为协程,一个Go程序可以运行超过数万个Gorout
阅读全文

浙公网安备 33010602011771号