猿问

Golang 中 url.openStream() 的等效函数

在某个地方,您显然有一个调用newWindowsSpecificThing(). 那应该在特定于 Windows 的文件中。如果是,那么它不可用也没有关系。你有一些东西“检查它是否在 Windows 上运行”这一事实暗示了if runtime.GOOS == "windows"某处的声明。而不是拥有它,而是将整个移动if到一个在 Windows 特定文件中定义的函数中。您还需要在!windows文件中定义该函数,这很好。


作为我的代码示例,我有一个函数:


func Setup() *config {

    var cfg *config

    // setup portable parts of cfg

    return PlatformSpecificSetup(cfg)

}

然后我标记// +build windows了PlatformSpecificSetup()一个定义一种方式的文件,以及另一个// +build !windows定义另一种方式的标记。我从不需要检查runtime.GOOS,也不需要处理未定义的数据类型。该config结构本身是在这些文件中定义的,所以它可以为每个平台不同领域(只要他们同意足够Setup())。如果我更加小心,我可以创建一个结构,如:


type config struct {

  // independent stuff

  plat *platformConfig

}

然后只是platformConfig在每个平台文件中定义,但在实践中我发现这比它值得的麻烦更多。


慕容708150
浏览 178回答 1
1回答

三国纷争

希望这会有所帮助:package mainimport (    "fmt"    "io/ioutil"    "log"    "net/http")func Error(err error) {    if err != nil {        log.Fatal(err)    }}func main() {    response, err := http.Get("http://www.oracle.com/")    Error(err)    defer response.Body.Close()    contents, err := ioutil.ReadAll(response.Body)    Error(err)    fmt.Printf("%s\n", contents)}更多详情:https : //golang.org/pkg/net/http/
随时随地看视频慕课网APP

相关分类

Go
我要回答