小编Ric*_*777的帖子

go语言中的Unix域套接字名称

go中的net包提供了这个功能:

func ResolveUnixAddr(net, addr string) (*UnixAddr, error)
Run Code Online (Sandbox Code Playgroud)

string参数net给出网络名称"unix","unixgram"或​​"unixpacket".

我猜网络名称的含义如下:

  • unixgram:作为socket()函数中的类型SOCK_DGRAM,由网络包中的ListenPacket()使用.

  • unixpacket:作为socket()函数中的SOCK_STREAM类型,由net包中的Listen()使用.

  • unix:要么

我对吗?

unix sockets go

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

为什么使用Go接口{}作为参数,当我用字符串调用func时,它会转换一个alloc/ns吗?

我有一个Go接口函数,它以接口{}作为参数.当我用字符串调用函数时,它将转换一个alloc/ns.为什么?

   func foo(...interface{}) error {
       ....
   }

   func use() {
     var str = "use it"
     e := foo(str)
     _ = e
   }
Run Code Online (Sandbox Code Playgroud)

go

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

为什么Go会为小程序生成大的二进制文件?

为什么Go编译器会产生大的二进制文件?

例如,在编译下面的代码后,我得到一个1.8 MB的exec文件

package main
import "fmt"
func main(){
   fmt.Println("Hello World")
}
Run Code Online (Sandbox Code Playgroud)

我在UbuntuWin7上测试了上面的代码,结果是一样的!

我还用+70行代码编写了一个更大的程序,结果二进制文件又惊人地1.8 MB(实际上有几个字节差异).我想知道Go编译器将什么转储到二进制文件中.

size binary go

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

如何在Go模板中解析范围之外的变量?

我有两个结构如下,我需要使用模板包在模板上呈现数据.我收到这个错误

<.Email>: Email is not a field of struct type Notes.

问题似乎是只有范围结构的字段似乎在范围循环中可用,所以我想知道如何从范围结构外部导入字段(例如电子邮件字符串).

这种行为非常意外.

type notes struct{
    Note string
    sf string
}

type uis struct{
    notes []Note
    Email string
}

var ui uis
Run Code Online (Sandbox Code Playgroud)

HTML

{{range .notes}}
    {{.Email}} {{.sf}}
    {{end}}

Email {{.Email}}
Run Code Online (Sandbox Code Playgroud)

我检查过godocs但它们似乎没用.

templates go

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

了解Go中的Scanf

我不知道如何使用Scanf功能.假设我想在扫描时输入数字10.通过这样做,输出不应该是0xA?

另外,如何使用具有两个或更多扫描参数的函数(例如fmt.Scanf("%x", &e, &f, &g))?

package main

import (
    "fmt"
)

func main() {

    var e int

    fmt.Scanf("%#X", &e)
    fmt.Println(e)

}
Run Code Online (Sandbox Code Playgroud)

scanf go

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

为什么Go的地图迭代顺序在打印时会有所不同?

package main

import "fmt"

func main(){
    sample := map[string]string{
    "key1":"value1",
    "key2":"value2",
    "key3":"value3",
    }
    for i := 0;i<3;i++{
        fmt.Println(sample)
    }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码只打印了一个map [string]字符串三次.

我希望它是一个固定的输出,但它显示如下:

map[key3:value3 key2:value2 key1:value1]
map[key1:value1 key3:value3 key2:value2]
map[key2:value2 key1:value1 key3:value3]
Run Code Online (Sandbox Code Playgroud)

它有所不同!

而在python中:

#!/bin/env python
#encoding=utf8

sample = {
    "key1":"value1",
    "key2":"value2",
    "key3":"value3",
}
for i in range(3):
    print sample
Run Code Online (Sandbox Code Playgroud)

输出:

{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}
{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}
{'key3': 'value3', 'key2': 'value2', 'key1': 'value1'}`
Run Code Online (Sandbox Code Playgroud)

python map go

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

如何检查是从localhost还是从外部访问网页?

  1. 如何从Go查看是从本地主机还是从外部访问网页?

  2. 如何为外部用户禁用某些功能?

  3. 我怎么能隐藏整个网站,比如"没有,这里什么都没有,端口8080关闭,移动".

network-programming go

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

GO中的并发编程测试

我正在努力确保我的并发程序没有以下内容,

  • 僵局
  • 活锁
  • 饥饿

我找到了以下工具 http://blog.golang.org/race-detector

我尝试使用-race启用编译和运行,没有看到任何投诉.

有谁知道这是否会检查上述所有问题?在输出中没有收到任何投诉意味着该程序没有这些问题吗?

testing concurrency go

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

来自 fanIn 示例的 golang 并发模式

我正在关注 Rob Pike 去年 2012 年演讲中的 Go 并发模式示例(幻灯片来自此处:http : //talks.golang.org/2012/concurrency.slide#30)。

从示例“恢复序列”中,我不断收到错误消息:

prog.go:21: cannot use Message literal (type Message) as type string in send
prog.go:43: msg1.str undefined (type string has no field or method str)
prog.go:44: msg2.str undefined (type string has no field or method str)
prog.go:46: msg1.wait undefined (type string has no field or method wait)
prog.go:47: msg2.wait undefined (type string has no field or method wait)
Run Code Online (Sandbox Code Playgroud)

这是我的代码

type Message struct {
    str string
    wait chan bool  
} …
Run Code Online (Sandbox Code Playgroud)

concurrency go

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

如何告诉 Caddy 使用哪个子域

我第一次尝试使用 Caddy。我希望能够为多个子域提供服务。Caddy 向 Let's Encrypt 请求 SSL 证书。我已经设法让它在 caddyfile 中只有一个域名的情况下正常工作。

但是,假设我有

www.example.com, test.example.com {
    ...  lots of settings
}
Run Code Online (Sandbox Code Playgroud)

我依靠 Let's Connect 服务器回调这些子域之一(即不使用 DNS TXT 记录)。但这引发了一些问题:

  • Caddy 在请求证书时使用哪一个?
  • 有没有一种方法可以指定我想要它使用哪一个?

(在上面的示例中只有两个子域,但实际上我想知道如何让它与两个以上的子域一起使用。)

- 编辑:当我尝试这个时test.example.com,我收到一个错误(注意:我隐藏了我的实际域名):

Activating privacy features...2016/11/21 07:47:41 [www.example.com] failed to get certificate: acme: Error 403 - urn:acme:error:unauthorized - Invalid response from http://www.example.com/.well-known/acme-challenge/ALmqQ8Vl5fvPF91tvqw2zigHlPoRRgTGR2GaLtgX3-A [134.92.240.68]: 404
Run Code Online (Sandbox Code Playgroud)

Caddy 打印更多细节,本质上是重复相同的信息,然后终止。

lets-encrypt caddy caddyfile

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