Golang常见误区
1.左大括号一般不能单独一行 ? 在其他大多数语言中,{?的位置你自行决定。Go 比较特别,遵守分号注入规则(automatic semicolon injection):编译器会在每行代码尾部特定分隔符后加?;?来分隔多条语句,比如会在?)?后加分号: ? // 错误示例 func main()??????????????????? { ??? println("hello world") } // 等效于 func main();??? // 无函数体??????????????????? { ??? println("hello world") } ./main.go: missing function body ./main.go: syntax error: unexpected semicolon or newline before { // 正确示例 func main() { ??? println("hello world") }? ??? 注意代码块等特殊情况: // { 并不遵守分号注入规则,不会在其后边自动加分,此时可换行 func main() { ??? { ??????? println("hello world") ??? } }???? 2. 未使用的变量 如果在函数体代码中有未使用的变量,则无法通过编译,不过全局变量声明但不使用是可以的。 即使变量声明后为变量赋值,依旧无法通过编译,需在某处使用它: // 错误示例 var gvar int???? // 全局变量,声明不使用也可以 func main() { ??? var one int ????// error: one declared and not used ??? two := 2??? // error: two declared and not used ??? var three int??? // error: three declared and not used ??? three = 3??????? } // 正确示例 // 可以直接注释或移除未使用的变量 func main() { ??? var one int ??? _ = one ??? ??? two := 2 ??? println(two) ??? ??? var three int ??? one = three var four int ??? four = four } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |