在Go中误解了:=的用法

时间:2014-12-17 16:43:33

标签: go

我正在阅读this doc并看到以下片段:

  

:=语法是声明和初始化变量的简写,例如: for var f string =“short”在这种情况下。

f := "short"
fmt.Println(f)

关键是:它只适用于字符串吗?或者它是否足以了解它应该存储哪种数据类型?

加上:与var f = "short"不一样吗?

1 个答案:

答案 0 :(得分:5)

当然它会推断出右侧表达式返回的明显类型。

specification给出了这些例子:

i, j := 0, 10
f := func() int { return 7 }
ch := make(chan int)
r, w := os.Pipe(fd)  // os.Pipe() returns two values
_, y, _ := coord(p)  // coord() returns three values; only interested in y coordinate

请注意,它不是动态的:一切都在编译时发生,右侧部分表达式给出了类型。