Go 语言入门指南:基础语法(1)|青训营

83 阅读2分钟

go给我的第一感受就是,它是很多语言拼出来的,至少它有很多其他语言的特征 下面就讲一下学到的go的基本语法以及今天照着敲的代码

  1. 变量声明:go的变量声明用var开头(呵呵,让我想起了js),但 go需要在变量名后面加上它的类型,也可以使用:=的方式来简写(但这种简写方式只能在函数中使用,这种方法中的类型是由右值推导出来的)
  2. 常量的话加 const关键字且不能使用上面说的:=来进行声明

下面举个简单的例子

package main  
  
import (  
"fmt"  
)  
  
func main() {  
var xxx int = 4  
yyy := xxx + 1  
const con string = "abc"  
fmt.Println(xxx, yyy)  
fmt.Println(con)  
}
  1. go中的for不用写小括号(),大括号却是必须的(c之类的通常写一句的话就不写大括号了)
  2. if也和 for一样不用写小括号,大括号必须写
  3. switch的 case不需要写break
  4. defer话会在当前那层的函数返回后再进行执行
package main  
  
import "fmt"  
  
func main() {  
defer fmt.Println("this is a example of defer")  
fmt.Println("in main func")  
fmt.Println("about to end...")  
}

运行结果如下

image.png

  1. 如果不止有一个defer的话呢,顺序是后进先出
  2. 可以看到结果是先把函数中内容进行完了之后进行defer里面的,先进行了第二个的输出然后才是第一个
package main  
  
import "fmt"  
  
func main() {  
defer fmt.Println("1st example of defer")  
fmt.Println("1 defer done,another to go(双关一下)")  
defer fmt.Println("i am the second defer")  
fmt.Println("about to end...")  
}
  1. go中也有结构体和指针(类比c,不细说)
  2. 数组和切片,前者就像c中的数组,后者像py中的数组切片,但不能负索引
  3. 用make来进行动态的建立切片
package main  
  
import "fmt"  
  
func main() {  
var arr1 [10]int  
for i := 0; i < len(arr1); i++ {  
arr1[i] = 10 - i  
}  
arr2 := [7]int{1, 2, 3, 4, 5, 6}  
for i := 0; i < len(arr2); i++ {  
fmt.Println(arr2[i])  
}  
arr3 := arr2[:4]  
for i := 0; i < len(arr3); i++ {  
fmt.Println(arr3[i])  
}  
fmt.Println("变大变糕")  
fmt.Println(cap(arr3))  
fmt.Println(len(arr3))  
arr4 := make([]int, 100)  
for i := 0; i < len(arr4); i++ {  
fmt.Println(arr4[i])  
}  
}