具有多个返回值的Const声明

时间:2014-02-19 18:05:42

标签: go

我想要定义一个常量值:

 const var *url.URL = url.Parse("http://yahoo.com/")

我知道我必须完全定义变量及其类型。即我不能只使用“:=”简写。

但是,evaluate函数的返回值返回常量和错误。

  var, _ := url.Parse("http://yahoo.com/")

现在如何声明var是常量并在这种情况下丢弃错误?

2 个答案:

答案 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表示整数常量。

此处没有用户定义的功能。

您可以做的是定义varon 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是关键字。第三:在函数体外不允许使用短变量声明。