在go中有返回两个值或更多值的函数,通常一个是错误.假设我想将第一个返回值存储到已经初始化的变量中,但我想初始化变量以包含内联错误.有没有办法做到这一点?
例如,假设我有这个代码
var a int
//This code doesn't compile because err doesn't exist
a, err = SomeFuncWithTwoReturnValues()
//This code doesn't compile either
a, err := SomeFuncWithTwoReturnValues()
Run Code Online (Sandbox Code Playgroud)
我知道你可以做到这一点,但我希望有一种方法可以全部内联
var a int
var err error
a, err = SomeFuncWithTwoReturnValues()
Run Code Online (Sandbox Code Playgroud)
要么
a, err := SomeFuncWithTwoReturnValues()
Run Code Online (Sandbox Code Playgroud)
编辑:上面的代码实际编译,所以我回顾了我的代码,深入了解并创建了一个实际复制问题的快速示例(不仅仅是在我的脑海里......).
package main
func myfunc() (int, int) {
return 1, 1
}
func main() {
a := make([]int, 1)
a[0], b := myfunc()
a[0] = b
}
Run Code Online (Sandbox Code Playgroud)
编译说main.go|9| non-name a[0] on left side of :=.如果我做它= …
在Vim中,我喜欢这个功能,允许您在启动注释块后自动插入注释.你怎么做才能在换行符之后得到一个评论字符,但是在获得第二个换行符时,评论被删除,你开始一个没有评论字符的换行符.如果您正在处理注释块并且之后不想再发表评论(在我的情况下我也想将相同的内容应用于markdown列表,将*/ - 视为注释字符),这将非常有用.
例如
// typing a comment
// (cursor here after hitting enter once)
Run Code Online (Sandbox Code Playgroud)
和
// typing a comment
(cursor here after hitting enter twice)
Run Code Online (Sandbox Code Playgroud) 我遇到一个问题,对于某些 url,Golang 中的代码无法检索预期的内容。我没有发布实际的网址,但它具有这种形式,并且是谷歌驱动器文件下载的链接https://docs.google.com/uc?id=somelongid&export=download。如果我使用 wget 来获取文件,它工作正常。我也有使用的 ruby 代码open()并且它也可以工作。由于某种原因,Golang 返回一个空缓冲区并且没有错误。如果我使用此代码来获取一些“普通”url(例如静态网站),它会按预期工作并返回非空response.Body。下面是我从项目中提取的代码,以简化和缩小问题可能出现的范围。下面是输出。
package main
import (
"fmt"
"io/ioutil"
"net/http"
)
func main() {
resp, err := http.Get("myurlishere")
if err != nil {
fmt.Println("Something went wrong")
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
fmt.Printf("Body: %v\n", body)
fmt.Printf("Error: %v\n", err)
}
Run Code Online (Sandbox Code Playgroud)
输出
$go run main.go
Body: []
Error: <nil>
Run Code Online (Sandbox Code Playgroud)