range函数返回定义一个值的问题

jiangyd · · 1242 次点击
那么a := os.Open("a.txt") 这样为什么会报错multiple-value os.Open() in single-value context, 这个不能这样用,还是只有range可以这样
#2
更多评论
不是的,语言规范里说了,If the last iteration variable is the blank identifier, the range clause is equivalent to the same clause without that identifier. for i, _ := range ss 跟 for i := range 是效果一样的
#1
我个人认为 range 这种情况属于 go 的语法糖吧,因为用的频率比较大,给开发者尽量多的方便,类似的还有类型断言 obj, ok := i.(Type),map obj, ok := m[key], 这两个种情况,第二个变量 ok 都是可以省略掉的,因为这几种情况省略掉后面的 ok 不会影响到我们程序的正常运转,也不会丢失重要的信息。 但是 os.Open() 这个函数返回的值就不一样了,函数返回了多少个值,我们就必须要用多少个对应类型的变量去接收,这个是有明确规定的。,除非显示用 _ (忽略) 告诉编辑器我不需要这个值。
#3