为了账号安全,请及时绑定邮箱和手机立即绑定

在 Go 中声明变量而不指定类型

在 Go 中声明变量而不指定类型

Go
慕莱坞森 2021-12-07 14:56:31
在 Go 变量声明后面跟着预期的类型,例如 var x string = "I am a string",但我使用的是带有 go-plus 插件的 Atom 文本编辑器,go-plus 建议我“应该从var x 的声明;它将从右侧推断”。所以基本上,代码仍然编译而不指定 x 的类型?那么在Go中是不是没有必要指定变量类型呢?
查看完整描述

1 回答

?
慕村9548890

TA贡献1884条经验 获得超4个赞

重要的部分是“将从右侧推断”[作业的]。


您只需要在声明但不分配变量时指定类型,或者如果您希望类型与推断的类型不同。否则,变量的类型将与赋值右侧的类型相同。


// s and t are strings

s := "this is a string"

// this form isn't needed inside a function body, but works the same.

var t = "this is another string"


// x is a *big.Int

x := big.NewInt(0)


// e is a nil error interface

// we specify the type, because there's no assignment

var e error


// resp is an *http.Response, and err is an error

resp, err := http.Get("http://example.com")

在全局范围的函数体之外,您不能使用:=,但相同的类型推断仍然适用


var s = "this is still a string"

最后一种情况是您希望变量的类型与推断的类型不同。


// we want x to be an uint64 even though the literal would be 

// inferred as an int

var x uint64 = 3

// though we would do the same with a type conversion 

x := uint64(3)


// Taken from the http package, we want the DefaultTransport 

// to be a RoundTripper interface that contains a Transport

var DefaultTransport RoundTripper = &Transport{

    ...

}


查看完整回答
反对 回复 2021-12-07
  • 1 回答
  • 0 关注
  • 265 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信