小编Joh*_*don的帖子

如何使用Go读/写文件?

我一直在努力学习Go,但我一直难以尝试从普通文件读取和写入.

我可以得到inFile, _ := os.Open(INFILE, 0, 0),但实际上获取文件的内容没有意义,因为read函数将a []byte作为参数.

func (file *File) Read(b []byte) (n int, err Error)
Run Code Online (Sandbox Code Playgroud)

file go

274
推荐指数
8
解决办法
20万
查看次数

在Visual Studio调试器中查看数组?

是否可以在Visual Studio调试器中查看数组?QuickWatch仅显示数组的第一个元素.

c++ arrays debugging view visual-studio

232
推荐指数
4
解决办法
16万
查看次数

Go中的nil检测

我在Go中看到很多代码来检测nil,如下所示:

if err != nil { 
    // handle the error    
}
Run Code Online (Sandbox Code Playgroud)

但是,我有一个像这样的结构:

type Config struct {
    host string  
    port float64
}
Run Code Online (Sandbox Code Playgroud)

和config是Config的一个实例,当我这样做时:

if config == nil {
}
Run Code Online (Sandbox Code Playgroud)

有编译错误,说:无法将nil转换为类型Config

null go

144
推荐指数
5
解决办法
14万
查看次数

Go中的模拟函数

我正在通过编写一个小型的个人项目来学习Go.虽然它很小,但我决定从一开始就进行严格的单元测试,以便在Go上学习好习惯.

琐碎的单元测试都很好,花花公子,但我现在对依赖感到困惑; 我希望能够用模拟函数替换一些函数调用.这是我的代码片段:

func get_page(url string) string {
    get_dl_slot(url)
    defer free_dl_slot(url)

    resp, err := http.Get(url)
    if err != nil { return "" }
    defer resp.Body.Close()

    contents, err := ioutil.ReadAll(resp.Body)
    if err != nil { return "" }
    return string(contents)
}

func downloader() {
    dl_slots = make(chan bool, DL_SLOT_AMOUNT) // Init the download slot semaphore
    content := get_page(BASE_URL)
    links_regexp := regexp.MustCompile(LIST_LINK_REGEXP)
    matches := links_regexp.FindAllStringSubmatch(content, -1)
    for _, match := range matches{
        go serie_dl(match[1], match[2])
    }
}
Run Code Online (Sandbox Code Playgroud)

我希望能够测试downloader()而不实际通过http获取页面 - 即通过模拟get_page(更容易,因为它只返回页面内容作为字符串)或http.Get().

我找到了这个帖子:https …

unit-testing mocking go

129
推荐指数
4
解决办法
8万
查看次数

去错误处理技术

我刚刚开始使用Go.我的代码开始有很多这样的:

   if err != nil {
      //handle err
   }
Run Code Online (Sandbox Code Playgroud)

或这个

  if err := rows.Scan(&some_column); err != nil {
      //handle err
  }
Run Code Online (Sandbox Code Playgroud)

在Go中检查和处理错误是否有一些很好的习语/策略/最佳实践?

编辑澄清:我不是在追逐或暗示Go团队想出更好的东西.我问的是我做得对,还是我错过了社区提出的一些技巧.谢谢大家.

go

106
推荐指数
3
解决办法
2万
查看次数

git相当于hg mq?

我刚开始使用Git和Mercurial一起熟悉Git.

我广泛使用Mercurial中的mq扩展来管理本地补丁,我正在寻找Git等价物.

我应该只使用Git分支吗?或者是否有更好的方法来管理本地补丁,以便轻松应用和删除补丁?

谢谢,

git mercurial mercurial-queue

51
推荐指数
4
解决办法
1万
查看次数

去:从延迟回来

如果它发生混乱(在Go中)我想从函数返回错误:

func getReport(filename string) (rep report, err error) {
    rep.data = make(map[string]float64)

    defer func() {
        if r := recover(); r != nil {
            fmt.Println("Recovered in f", r)
            err, _ = r.(error)
            return nil, err
        }
    }()
    panic("Report format not recognized.")
    // rest of the getReport function, which can try to out-of-bound-access a slice
    ...
} 
Run Code Online (Sandbox Code Playgroud)

我似乎误解了恐慌和推迟的概念.任何人都可以开导我吗?

return go panic

42
推荐指数
3
解决办法
2万
查看次数

在Go中,编写非阻塞代码是否有意义?

来自node.js的观点,其中所有代码都是非阻塞的.

在Go中,使用通道可以轻松实现非阻塞.

如果有人在go中编写node.js类型的服务器,是否有意义使其无阻塞?例如,让数据库connect()函数返回一个通道,而不是在等待连接发生时阻塞.

对我来说,这似乎是正确的方法

但......

go blocking node.js

38
推荐指数
5
解决办法
2万
查看次数

Debian的Packaging Go应用程序

如何将Go二进制文件放入Debian包中?由于Go是静态链接的,我只有一个可执行文件 - 我不需要很多复杂的项目元数据信息.是否有一种简单的方法来打包可执行文件和资源文件而不经历创伤debuild

我一直在寻找现有的问题; 但是,我的所有研究都提出了关于包含golang开发环境的.deb文件的问题/答案(例如,如果你这样做,你会得到什么sudo apt-get install golang-go).

debian packaging go

37
推荐指数
4
解决办法
1万
查看次数

去模板示例

什么网站有一些关于使用Go html/templates的最新资源,特别是在解析html文件和处理列表方面?我遇到了Hoka Poka网站,但似乎已经过时了.

templates go

35
推荐指数
3
解决办法
6万
查看次数