go初学注意事项之——语法问题

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() {

}

You May Also Like

About the Author: daidai5771

发表评论

电子邮件地址不会被公开。 必填项已用*标注