尝试使用Go的http包时,我无法确定的语法.Read
。尽管我尝试了其他一些被编译器拒绝的其他事情,但这里只有我标记的以下内容是我必须编译的。
package main
import "fmt";
import "http";
import "os";
func main () {
kinopiko_flair := "http://stackoverflow.com/users/flair/181548.json";
response, _, error := http.Get (kinopiko_flair);
if (error != nil) {
// I want to print out the error too.
fmt.Printf ("Error getting %s\n", kinopiko_flair);
os.Exit (1);
}
fmt.Printf ("Status is %s\n", response.Status);
var nr int;
var buf []byte;
nr, error = response.Body.Read (buf); // HERE
if (error != nil) {
// I want to print out the error too.
fmt.Printf ("Error reading response.\n");
os.Exit (1);
}
response.Body.Close ();
fmt.Printf ("Got %d bytes\n", nr);
fmt.Printf ("Got '%s'\n", buf);
}
该URL可以,因为wget
可以正常使用,但是在我运行时,它buf
只是一个空字符串,nr
并且始终为零。我需要怎么做才能取出数据response
?编译器拒绝了.ReadAll
其他尝试。
输出看起来像这样:
状态为200 OK
得到了0个字节
得到 ''
尝试给切片buf设置一个大小,例如
buf := make([]byte,128);
读取器最多读取给定缓冲区的len()。
来自io.go
// Reader is the interface that wraps the basic Read method.
//
// Read reads up to len(p) bytes into p. It returns the number of bytes
// read (0 <= n <= len(p)) and any error encountered.
// Even if Read returns n < len(p),
// it may use all of p as scratch space during the call.
// If some data is available but not len(p) bytes, Read conventionally
// returns what is available rather than block waiting for more.
//
// At the end of the input stream, Read returns 0, os.EOF.
// Read may return a non-zero number of bytes with a non-nil err.
// In particular, a Read that exhausts the input may return n > 0, os.EOF.
问题内容: 假设我要编写一个在切片中查找值的函数 我直观地想写: 但是我无法通过Go做到这一点。我可以与 这样就可以了,但是在我的真实代码中,事情变得更加复杂(我需要进行slices [from:end]等),append等…,如果我在接口中重新定义了所有这些代码,我最终会拥有很多代码。有没有更好的办法? 问题答案: 您可以使用反射。我为项目编写了此函数,请随时使用它:
问题内容: 在新的Go语言中,如何调用C 代码?换句话说,如何包装我的C 类并在Go中使用它们? 问题答案: 更新: 我已经成功地将一个小型测试C ++类与Go链接在一起 如果您使用C接口包装C ++代码,则应该可以使用cgo调用您的库(请参阅中的gmp示例)。 我不确定C ++中的类概念是否真的可以在Go中表达,因为它没有继承。 这是一个例子: 我有一个C ++类定义为: 我想在Go中使用。我将
问题内容: 有什么方法可以从C#执行Go函数吗?对于Python,我将使用Ironpython为例。 我知道我可以产生一个执行Go脚本的过程,但是如果可能的话,我真的不想回退到这种解决方案。 Google搜索没有显示任何内容,因此有什么方法可以使用API做到这一点?还是我必须回退流程? 问题答案: 编辑:我的答案现在是不正确的,因为自从我发布以来,Go已经更新。 这个stackoverflow
问题内容: 我需要在Go中对int64的较大值执行运算,例如求幂和除法,但是我遇到了溢出问题。我尝试将它们转换为float64,但随后遇到其他问题。这是我尝试过的。 我有一个整数变量,必须将其转换为float64才能使用方便的数学包(https://golang.org/pkg/math)。 但是,如果整数变量太大,则无法正确转换。我假设这是因为大小大于float64。例如: 我正在尝试使用mat
问题内容: 我有一个.so文件,我想在我的Go代码中调用其功能。 我该怎么做呢?我已经阅读了cgo和syscall软件包。它们接近我想要的位置,但是我看不到可以在.so文件中调用函数的任何地方。 我想确切地实现ctypes包在Python中的功能。 有人可以帮忙吗? 问题答案: 如果要使用在编译时静态已知的共享库,则可以简单地使用cgo。阅读有关如何准确执行此操作的文档,但是通常您会指定一些链接器
问题内容: 给定一个函数,可以得到它的名字吗?说: 有人告诉我runtime.FuncForPC会有所帮助,但我不明白如何使用它。 问题答案: 很抱歉回答我自己的问题,但我找到了解决方案: