我想要定义一个常量值:
const var *url.URL = url.Parse("http://yahoo.com/")
我知道我必须完全定义变量及其类型。即我不能只使用“:=”简写。
但是,evaluate函数的返回值返回常量和错误。
var, _ := url.Parse("http://yahoo.com/")
现在如何声明var是常量并在这种情况下丢弃错误?
答案 0 :(得分:8)
首先,您不需要指定类型,只需编写var foo = <expression>
即可。
您需要使用var
代替:=
的唯一原因是that short variable declarations are only allowed in functions,但您在函数之外操作。
其次,你不能对常量值使用函数调用,因为它们不是常量(必须计算函数,这是针对Go的常量定义)。另请参阅the spec on what constants are:
常量值由符文,整数,浮点,虚数或字符串文字表示,表示常量的标识符,常量表达式,结果为常量的转换,或某些值的结果值内置函数,如unsafe.Sizeof应用于任何值,cap或len应用于某些表达式,real和imag应用于复数常量和复数应用于数值常量。布尔值实数值由预先声明的常量true和false表示。预先标识的标识符iota表示整数常量。
此处没有用户定义的功能。
您可以做的是定义var
(on play):
func MustParse(s string) url.URL {
url, err := url.Parse(s)
if err != nil {
panic(err);
}
return *url
}
var foo = MustParse("http://yahoo.com/")
当然你也可以做
var foo, _ = url.Parse("foo")
但有了这个,你就不会看到你的网址是否错误。
答案 1 :(得分:2)
你不能做到。抱歉。第一:Go中没有const变量。第二:您无法为变量var
命名,因为var
是关键字。第三:在函数体外不允许使用短变量声明。