英文:
Is there a way to cast "en passant"?
问题
假设文件token.txt
包含一个字符串。为了读取它,我需要执行以下操作:
byteToken, _ := ioutil.ReadFile("token.txt")
token := string(byteToken)
有没有一种方法可以“自动转换”变量,这样我就不需要使用中间变量来指定要使用的类型?类似于以下代码(当然,这是无效的代码):
string(token), _ := ioutil.ReadFile("token.txt")
关于标题:en passant 是国际象棋中的一种棋步,当你做某个动作时会发生其他事情(对手在你移动棋子时捕获你的兵)- 在这种情况下,我想强调的是转换将在读取调用时完成。
英文:
Suppose that the file token.txt
contains a single string. In order to read it, I have to
byteToken, _ := ioutil.ReadFile("token.txt")
token := string(byteToken)
Is there a way to "automatically cast" a variable, so that I do not need to use the intermediate case when I know what type I want to use? Something along the lines of (this is invalid code of course)
string(token), _ := ioutil.ReadFile("token.txt")
About the title: en passant is a chess move where something happens when you do something else (the adversary captures your pawn as you move it) - in this case, I wanted to highlight the fact that the casting would be done as the read call is made.
答案1
得分: 2
你可以使用一个实用函数来实现这个:
func ToString(arr []byte, err error) (string, error) {
if err != nil {
return "", err
}
return string(arr), nil
}
token, err := ToString(ioutil.ReadFile(...))
上面的代码中,token 是一个字符串。
英文:
You can do that using a utility function:
func ToString(arr []byte, err error) (string, error) {
if err != nil {
return "", err
}
return string(arr), nil
}
token, err := ToString(ioutil.ReadFile(...))
Above, token is a string.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论