golang怎么把interface转化为map

var src []map[string]stringvar dest []map[string]interface{}for i := range src { m := src[i] n := make(map[string]interface{}) for k,v := range m { n[k] = interface{}(v) } dest = append(dest, n)}

golang 什么时候用goroutine

Go runtime的调度器:
在了解Go的运行时的scheduler之前,需要先了解为什么需要它,因为我们可能会想,OS内核不是已经有一个线程scheduler了嘛?
熟悉POSIX API的人都知道,POSIX的方案在很大程度上是对Unix process进场模型的一个逻辑描述和扩展,两者有很多相似的地方。 Thread有自己的信号掩码,CPU affinity等。但是很多特征对于Go程序来说都是累赘。 尤其是context上下文切换的耗时。另一个原因是Go的垃圾回收需要所有的goroutine停止,使得内存在一个一致的状态。垃圾回收的时间点是不确定的,如果依靠OS自身的scheduler来调度,那么会有大量的线程需要停止工作

golang 获取时间精确能到纳秒吗

这样。不过只是个精确到纳秒的计时器,不是精确到纳秒的当前时间。windows好像只能拿到ms精度的当前时间吧,不是很清楚。
package main

import (
"syscall"
"time"
"unsafe"
)

func NewStopWatch() func() time.Duration {
var QPCTimer func() func() time.Duration
QPCTimer

golang 获取时间精确能到纳秒吗

这样。不过只是个精确到纳秒的计时器,不是精确到纳秒的当前时间。windows好像只能拿到ms精度的当前时间吧,不是很清楚。
package main

import (
"syscall"
"time"
"unsafe"
)

func NewStopWatch() func() time.Duration {
var QPCTimer

golang channel

channel跟java thread不一样,channel是协程不是线程。channel不会产生新的线程,自然不会涉及到新的进程或者线程调度。所以就不存在线程安全这个概念了