说我想以https://golang.org编程方式获得.目前golang.org(ssl)有一个错误的证书,*.appspot.com当我运行时,它发布给了:
package main
import (
"log"
"net/http"
)
func main() {
_, err := http.Get("https://golang.org/")
if err != nil {
log.Fatal(err)
}
}
Run Code Online (Sandbox Code Playgroud)
我得到了(正如我所料)
Get https://golang.org/: certificate is valid for *.appspot.com, *.*.appspot.com, appspot.com, not golang.org
Run Code Online (Sandbox Code Playgroud)
现在,我想自己信任这个证书(想象一下我可以验证指纹等的自发证书):我如何提出请求并验证/信任证书?
我可能需要使用openssl下载证书,将其加载到我的文件中并填充tls.Configstruct!
从节点手册中我看到我可以获取文件的目录__dirname,但是从REPL看来这似乎是未定义的.这是我的误解还是错误在哪里?
$ node
> console.log(__dirname)
ReferenceError: __dirname is not defined
at repl:1:14
at REPLServer.eval (repl.js:80:21)
at Interface.<anonymous> (repl.js:182:12)
at Interface.emit (events.js:67:17)
at Interface._onLine (readline.js:162:10)
at Interface._line (readline.js:426:8)
at Interface._ttyWrite (readline.js:603:14)
at ReadStream.<anonymous> (readline.js:82:12)
at ReadStream.emit (events.js:88:20)
at ReadStream._emitKey (tty.js:320:10)
Run Code Online (Sandbox Code Playgroud) 这个示例用法sync.WaitGroup是否正确?它给出了预期的结果,但我不确定它wg.Add(4)的位置和位置wg.Done().一次添加四个goroutines是否有意义wg.Add()?
http://play.golang.org/p/ecvYHiie0P
package main
import (
"fmt"
"sync"
"time"
)
func dosomething(millisecs time.Duration, wg *sync.WaitGroup) {
duration := millisecs * time.Millisecond
time.Sleep(duration)
fmt.Println("Function in background, duration:", duration)
wg.Done()
}
func main() {
var wg sync.WaitGroup
wg.Add(4)
go dosomething(200, &wg)
go dosomething(400, &wg)
go dosomething(150, &wg)
go dosomething(600, &wg)
wg.Wait()
fmt.Println("Done")
}
Run Code Online (Sandbox Code Playgroud)
结果(如预期):
Function in background, duration: 150ms
Function in background, duration: 200ms
Function in background, duration: 400ms
Function in background, duration: 600ms …Run Code Online (Sandbox Code Playgroud) 我正在使用Mac OS X Apple脚本编辑器和(在调试时)而不是编写大量display dialog语句,我想在下面的窗口中编写一些计算结果,称为"结果"(我在这里有德语UI) ,所以翻译是猜测).那么是否有一个写/打印语句可用于将消息放入"标准输出"窗口?我不是要求将消息放在文件系统的日志文件中,这纯粹是暂时的.
我使用Go为各种平台编译一个程序,并通过调用相对路径或仅通过其名称(如果它在PATH变量中)来运行它.
是否有可能找出可执行文件的位置?
说,我的程序叫做" foo(.exe)".我可以运行./foo,foo(如果它在PATH) ../../subdir/subdir/foo.
我试过使用os.Args[0],我想我应该检查程序名称是否包含除"foo"之外的其他内容.如果是,则使用filepath.Abs,如果不是,则使用(我找不到函数名称,有一个函数可以通过PATH查看程序的位置).
使用日志包时,Go会输出类似的内容
2009/11/10 23:00:00 Hello, world
Run Code Online (Sandbox Code Playgroud)
如何将日期和时间格式更改为类似的内容dd.mm.yyy hh:mm:ss?示例(游乐场链接):
package main
import "log"
func main() {
log.Println("Hello, playground")
}
Run Code Online (Sandbox Code Playgroud) 例:
在包中io,类型ByteReader定义了一个包装方法的接口ReadByte() (c byte, err error).
找出 标准库中哪些类型(即golang.org/pkg中列出的)满足此接口的最简单方法是什么?
这只是经验问题还是有任何其他帮助?
我已经读过,与for循环相比,ipairs的使用速度很慢,我是否应该改变编程习惯?我将在一天使用lua 5.2,目前为5.1.
我的阵列最多约有1000个项目.
local mytbl = { 'a','b','c','e'}
for i,v in ipairs(mytbl) do
print(i,v)
end
for i=1,#mytbl do
print(i,mytbl[i])
end
Run Code Online (Sandbox Code Playgroud) 这有点是我上一个问题的后续问题:golang:在本地目录中安装软件包
我已GOPATH设置$HOME/prog/go/gopath为此路径存在三个目录:
~/prog/go/gopath$ ls
bin pkg src
Run Code Online (Sandbox Code Playgroud)
现在我尝试安装一个模块来访问redis数据库,要求我运行
go install
Run Code Online (Sandbox Code Playgroud)
在源目录中.但命令go install给了我
~/prog/go/gopath/src/redis (go1)$ go install
go install flag: open /usr/local/go/pkg/darwin_amd64/flag.a: permission denied
~/prog/go/gopath/src/redis (go1)$ echo $GOPATH
<myhomedir>/prog/go/gopath
Run Code Online (Sandbox Code Playgroud)
(哪里<myhomedir>是有效路径)
问题1:为什么go install不采取$GOPATH考虑?问题2:如何说服go install使用$GOPATH?
这是我的测试代码.只需制作一个简单的http服务器.然后生成一个json数据,它的值是"&".但结果是我不想要的.结果在代码块下面.
package main
import (
"encoding/json"
"fmt"
"log"
"net/http"
)
func testFunc(w http.ResponseWriter, r *http.Request) {
data := make(map[string]string)
data["key"] = "&"
bytes, err := json.Marshal(data)
if err != nil {
fmt.Fprintln(w, "generator json error")
} else {
//print console
fmt.Println(string(bytes))
fmt.Println("&")
//print broswer
fmt.Fprintln(w, string(bytes))
fmt.Fprintln(w, "&")
}
}
func main() {
http.HandleFunc("/", testFunc)
err := http.ListenAndServe(":9090", nil)
if err != nil {
log.Fatal("ListenAndServe", err)
}
}
Run Code Online (Sandbox Code Playgroud)
结果:Chrome浏览器显示:
{ "关键": "\ u0026"}
&
控制台还显示:
{ "关键": "\ u0026"}
& …