Go是一门简单有趣的语言,语法也很简单,但是如果你之前用过其他的语言,会发现在语法上与其他语言稍微有些区别,尤其是在同时使用多种语言时,容易混淆。
第一、开大括号问题
开大括号不能放在单独的一行,你会发现无论在定义函数还是if等语句后,大括号单独一行就会出现错误,如
/* 使用 if 语句判断布尔表达式 */
if( a < 20 ) {//此处的大括号单独一行就会报编译错误
/* 如果条件为 true 则执行以下语句 */
fmt.Printf(“a 小于 20\n” )
}
又如:
} else {
/* 如果条件为 false 则执行以下语句 */
fmt.Printf(“a 不小于 20\n” );
}
又或者:
func main() {
其他语言使用大括号时,你可以随意分配它的位置, 但是go使用大括号时,一定要注意他的位置,否则编译会通不过。
第二、未定义变量使用问题
如果你有未使用的变量,代码将编译失败。开始学习时,感到很惊讶,这个未使用的变量在其他语言顶多是warning,不会影响使用,但是在go里居然还出编译错误,不过也有例外。在函数内一定要使用声明的变量,但未使用的全局变量是没问题的。
写了个demo,编译时报错, i declared and not used
func main(){
numbers := [6]int {1,3,4,5,6,8};
for i,v := range numbers{
fmt.Println(v);
}}
即使给未使用的变量赋予了一个新值,编译还是不通过,必须要使用才行。如果只是多余的变量,直接移除即可,但是对于这种遍历数组时,下标使用不到的问题,如何解决呢, 看来只能换一种数组遍历的方式了:
for i:=0; i<len(numbers); i++ {
fmt.Println(numbers[i]);
}
或者我们使用空白符”_”省略
for _,v := range numbers{
fmt.Println(v);
}“_”可用于必须要用但不使用的变量申明
第三、简式变量申明只能在函数体内申明
在使用变量申明时,我们常用到a := 1 ,如果定义在函数体外,例如:
package main
a:= 1 //error
func main() {
}