具有多个返回值的Const声明

enj*_*ife 2 go

我想要定义一个常量值:

 const var *url.URL = url.Parse("http://yahoo.com/")
Run Code Online (Sandbox Code Playgroud)

我知道我必须完全定义变量及其类型.即我不能只使用":="速记.

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

  var, _ := url.Parse("http://yahoo.com/")
Run Code Online (Sandbox Code Playgroud)

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

nem*_*emo 8

首先,您不需要指定类型,您可以简单地编写var foo = <expression>.为什么你需要使用的唯一原因var,而不是:=短变量声明在功能只允许但你的功能之外运行.

其次,你不能对常量值使用函数调用,因为它们不是常量(必须对函数进行求值,这与Go的常量定义相反).另请参阅有关常量的规范:

常量值由符文,整数,浮点,虚数或字符串文字表示,表示常量的标识符,常量表达式,结果为常量的转换或某些内置的结果值函数如unsafe.Sizeof应用于任何值,cap或len应用于某些表达式,real和imag应用于复数常量和复数应用于数值常量.布尔值实数值由预先声明的常量true和false表示.预先标识的标识符iota表示整数常量.

这里没有用户定义的功能.

你可以做的是定义一个var(在场):

func MustParse(s string) url.URL {
    url, err := url.Parse(s)
    if err != nil { 
        panic(err); 
    }
    return *url
}

var foo = MustParse("http://yahoo.com/")
Run Code Online (Sandbox Code Playgroud)

当然你也可以这样做

var foo, _ = url.Parse("foo")
Run Code Online (Sandbox Code Playgroud)

但有了这个,你就不会看到你的网址是否错误.