小编fdi*_*ing的帖子

如何在golang中"捕获"特定错误

例如,我使用一个golang标准库函数:

func Dial(network, address string) (*Client, error)
Run Code Online (Sandbox Code Playgroud)

此函数可能会返回错误,我只关心报告"连接丢失"或"连接被拒绝"的错误,然后执行一些代码来修复这些错误.
这好像是:

client, err := rpc.Dial("tcp", ":1234")  
if err == KindOf(ConnectionRefused) {
  // do something
}
Run Code Online (Sandbox Code Playgroud)

更重要的是,如何获得特定标准库函数可能返回的所有错误?

error-handling go

9
推荐指数
1
解决办法
4898
查看次数

我在哪里可以得到 go-lang 源代码的 C 版本?

据我所知,go-lang一开始是C写的,现在是自己写的。我想弄清楚 go-lang 的一些基本实现,例如 multi-return-value-of-function,我猜它可能使用了结构。

但是现在go-lang版本的go-lang源代码已经隐藏了这些细节,那么哪里可以得到C版本的go-lang源代码(历史版本)呢?我检查了 golang.org,没有找到。

谢谢。

go

6
推荐指数
1
解决办法
1231
查看次数

for-range循环中指针和值切片之间的差异

请检查以下代码段:

package main

import (  
    "fmt"
    "time"
)

type field struct {  
    name string
}

func (p *field) print() {  
    fmt.Println(p.name)
}

func main() {
    fmt.Println("use values:")

    // use values in range loop and go rountines
    values := []field{{"one"},{"two"},{"three"}}
    for _, v := range values {
        go v.print()
    }

    time.Sleep(time.Second)

    fmt.Println()
    fmt.Println("use pointers:")

    // use pointers in range loop and go rountines
    poniters := []*field{{"one"},{"two"},{"three"}}
    for _, v := range poniters {
        go v.print()
    }

    time.Sleep(time.Second)
}
Run Code Online (Sandbox Code Playgroud)

链接到这里:https: …

pointers for-loop go goroutine

3
推荐指数
1
解决办法
300
查看次数

Go和Java在接口上有什么区别?

最近有人问我一个问题,Golang 和 Java 在interface 上有什么区别?

我知道存在一些“语法糖级别”差异,我感兴趣的是地下的任何东西,比如 Golang 和 Java 是如何实现接口的?最大的区别是什么?哪一种更有效率?为什么?

任何人都可以发布有关此主题的博客链接或源代码吗?源代码更好。

谢谢。

java interface go

3
推荐指数
1
解决办法
4100
查看次数

标签 统计

go ×4

error-handling ×1

for-loop ×1

goroutine ×1

interface ×1

java ×1

pointers ×1