小编kos*_*tix的帖子

去 - 为什么安排goroutine背景工作者也需要自己的goroutine?

我正在研究一些Go的并发模式.我看着使用goroutine和输入/输出通道实现后台工作程序,并注意到当我将新作业发送到接收通道(基本上将新作业排入队列)时,我必须在goroutine中执行它,否则调度会搞乱.含义:

这崩溃了:

for _, jobData := range(dataSet) {
    input <- jobData
}
Run Code Online (Sandbox Code Playgroud)

这有效:

go func() {
    for _, jobData := range(dataSet) {
        input <- jobData
    }
}()
Run Code Online (Sandbox Code Playgroud)

对于更具体的东西,我玩了一些无意义的代码(这里是去游乐场):

package main

import (
    "log"
    "runtime"
)

func doWork(data int) (result int) {
    // ... some 'heavy' computation
    result = data * data
    return
}

// do the processing of the input and return
// results on the output channel
func Worker(input, output chan int) {
    for data := range …
Run Code Online (Sandbox Code Playgroud)

concurrency design-patterns go goroutine

2
推荐指数
1
解决办法
583
查看次数

如何键入断言值是指针(到字符串)?

我正在尝试创建一个返回泛型类型长度的方法.如果我们有一个字符串,我们调用len(string),或者如果它是一个interface {}类型的数组,我们也会调用len().这很好用,但是,它在你传入指向字符串的指针时不起作用(我假设我对数组和切片也有同样的问题).那么如何检查我是否有指针并取消引用呢?

func (s *Set) Len(i interface{}) int {
    if str, ok := i.(string); ok {
        return len(str)
    }
    if array, ok := i.([]interface{}); ok {
        return len(array)
    }
    if m, ok := i.(map[interface{}]interface{}); ok {
        return len(m)
    }
    return 0
}
Run Code Online (Sandbox Code Playgroud)

go

2
推荐指数
1
解决办法
1009
查看次数

使用 Windows 版 Git 的 patch.exe 时出现“断言失败”

我有一个目录包含几个要修改的文件。我没有手动进行更改(因为文件太多),而是下载了一个 diff 文件(由其他用户制作),这个 diff 文件由 .bat 文件执行。

让我让它更系统。

  1. bat文件是WinDDK_7600.16385.1_patch.bat这个文件的路径是( C:\Users\kunze\Documents\Visual Studio 2010\Projects\busmaster-master\Documents\1 Development Environment\files)

这个文件的内容是

@echo on

set PATH=%PATH%;%ProgramFiles%\Git\bin

patch -p1 -d C:/ < WinDDK_7600.16385.1.diff

pause
Run Code Online (Sandbox Code Playgroud)
  1. 当我运行 bat 文件时,它将运行,WinDDK_7600.16385.1.diff并且此差异文件对 .bat 中的许多文件进行了更改C:\WinDDK。这个文件的路径是C:\Users\kunze\Documents\Visual Studio 2010\Projects\busmaster-master\Documents\1 Development Environment\files

  2. 需要更新差异的文件位于此目录中 C:\WinDDK

  3. 我已经为 git/bin 设置了路径环境变量

  4. 有人可以让我知道我应该在我的WinDDK_7600.16385.1_patch.bat 文件中进行哪些更改, 以便它可以找到并更新位于C:\WinDDK目录中的所有文件

我试了好几次,每次都出现这个错误"Assertion failed: hunk, file ../patch-2.5.9-src/patch.c, line 354"?有什么问题吗?

windows patch batch-file

2
推荐指数
1
解决办法
2576
查看次数

在Go中可以使用什么指针?

我想我明白指针是什么,但我不太明白何时使用它.
以下片段来自"A Tour of Go".
"*Vertex"和"&Vertex"的目的是什么?
我用"顶点"替换它们,它运行正常.

package main

import (
    "fmt"
    "math"
)

type Vertex struct {
    X, Y float64
}

func (v *Vertex) Abs() float64 {
    return math.Sqrt(v.X*v.X + v.Y*v.Y)
}

func main() {
    v := &Vertex{3, 4}
    fmt.Println(v.Abs())
}
Run Code Online (Sandbox Code Playgroud)

pointers go

2
推荐指数
1
解决办法
204
查看次数

如何编写mbox格式的文件?

我已使用Gmail API获取了邮件内容和必要的标头.我想把它们写入mbox文件.我可以找到Go包和样本来读取和解析mbox文件.但是如何使用Go创建和编写mbox文件?

go

2
推荐指数
1
解决办法
208
查看次数

如何获取一天前相对于当前的时间?

我需要查询我的数据库以了解一小时内发生的事件。因此,我想获取从现在那时(现在 - 24 小时,或现在 - 1 天)之间的事件。

我尝试过这种方法,但它是不正确的 -

package main

import (
    "fmt"
    "time"
)

func main() {

    now := time.Now()

    // print the time now
    fmt.Println(now)

    then := time.Now()
    diff := 24
    diff = diff.Hours()
    then = then.Add(-diff)

    // print the time before 24 hours
    fmt.Println(then)

    // print the delta between 'now' and 'then'
    fmt.Println(now.Sub(then))
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能使then == 1 全天/24 小时之前

非常感谢你的帮助!!

time go

2
推荐指数
1
解决办法
2970
查看次数

DVTPlugInManager:所需的插件兼容性不存在

最近推送到 git repo 时,继续从终端看到此错误日志。我认为这是因为我更新到 Xcode 9.2 或 macOS High Sierra。

2017-11-29 07:49:30.580 xcodebuild[1558:49212] [MT] DVTPlugInManager:所需的插件兼容性 UUID C3998872.. KSImageNamed.ideplugin (com.ksuther.KSImageNamed) 不存在

知道这意味着什么以及如何解决这个问题吗?

xcode

2
推荐指数
1
解决办法
2075
查看次数

解码JSON值,可以是字符串或数字

当我对REST API进行HTTP调用时,我可能会将JSON值count作为数字或字符串返回.在任何一种情况下,我都想把它整理成一个整数.我怎么能在Go中处理这个?

json go

2
推荐指数
1
解决办法
1648
查看次数

简单队列模型示例

是否有一个简单的程序,演示如何在Go中运行队列.我只需要在队列中添加1到10之类的东西,并使用另一个线程并行地从队列中拉出那些.

queue multithreading go

2
推荐指数
1
解决办法
544
查看次数

GoLand 文件缓存冲突

我不断收到文件缓存冲突的弹出窗口,但是当我进入显示差异时,内存和磁盘更改都是相同的。

极大地阻碍了工作。知道如何解决吗?

在此处输入图片说明

goland

2
推荐指数
1
解决办法
762
查看次数