• 基础语法

    一个简单的Go语句如下:

    fmt.Println("Hello, World!")
    
    • 一行代表一个语句结束。每个语句不需以分号;结尾,但也不是像Python一样纯靠缩进来表示内容,出现多行代码时,需要用大括号{}进行包裹
    • 标识符用来命名变量、类型等,其第一个字符必须是字母或下划线而不能是数字
    • 备注格式与 C/C++ 相同

    关键字

    Go语言中的25个关键字或保留字:

    breakdefaultfuncinterfaceselect
    casedefergomapstruct
    chanelsegotopackageswitch
    constfallthroughifrangetype
    continueforimportreturnvar

    以及36个预定义标识符:

    appendboolbytecapclose | complex | complex64 | complex128 | uint16
    copyfalsefloat32float64imag | int | int8 | int16 | uint32
    int32int64iotalenmake | new | nil | panic | uint64
    printprintlnrealrecoverstring | true | uint | uint8 | uintptr

    数据类型

    Go语言有以下几种数据类型:

    • 布尔型:常量 true 或者 false。一个简单的例子:var b bool = true

    • 数字类型:整型 int 和浮点型 float,并且原生支持复数,其中位的运算采用补码。更详细的信息看文章末尾。

    • 字符串类型:使用UTF-8编码标识Unicode文本

    • 以及以下几种派生类型:

    (a) 指针类型(Pointer)
    (b) 数组类型
    (c) 结构化类型(struct)
    (d) Channel 类型
    (e) 函数类型
    (f) 切片类型
    (g) 接口类型(interface)
    (h) Map 类型
    

    变量

    Go语言中声明变量使用var关键字:

    var identifier type
    

    声明变量的几种方式

    1.声明时指定数据类型

    var v_name v_type
    

    2.根据值自行判定变量类型

    var v_name = value
    

    3.忽略var关键字

    v_name := value
    

    操作符:=可以高效地创建一个新的变量,是使用变量的首选形式,但是只能被用在函数体内,不可以用于全局变量的声明与赋值。
    4.多变量声明

    //类型相同多个变量, 非全局变量
    var vname1, vname2, vname3 type
    vname1, vname2, vname3 = v1, v2, v3
    var vname1, vname2, vname3 = v1, v2, v3
    vname1, vname2, vname3 := v1, v2, v3
    // 这种因式分解关键字的写法一般用于声明全局变量
    var  (
        vname1 v_type1
        vname2 v_type2
    )
    

    常量

    常量的定义格式:

    const identifier [type]  = value
    

    多个相同类型的声明可以简写为:

    const c_name1, c_name2 = value1, value2
    

    常量还可以用作枚举:

    const  (
        Unknown  =  0
        Female  =  1
        Male  =  2
    )
    

    iota,特殊常量,可以认为是一个可以被编译器修改的常量。每当 iota 在新的一行被使用时,它的值都会自动加 1。

    运算符

    Golang的运算符与大多数编程语言相同,就不多加累述了。有兴趣的可以浏览Go 语言操作符

    条件语句

    与大多数编程语言相似,Golang有if,if...else,if嵌套,switch等判断语句,还有一个特有的select语句与switch语句相似。
    例子:
    if…else语句

    if  布尔表达式  {
        /* 在布尔表达式为 true 时执行 */
    }  else  {
        /* 在布尔表达式为 false 时执行 */
    }
    

    switch语句

    switch var1 {
        case val1:
            ...
        case val2:
            ...
        default:
            ...
    }
    

    select语句

    select {
        case communication clause  :
           statement(s);
        case communication clause  :
           statement(s);
        /* 你可以定义任意数量的 case */
        default : /* 可选 */
           statement(s);
    }
    

    循环语句

    Go语言中循环为for语句,有三种形式
    和 C 语言的 for 一样:

    for init; condition; post { }
    

    和 C 的 while 一样:

    for condition { }
    

    和 C 的 for(;;) 一样:

    for { }
    

    例子:

    package main
    import "fmt"
    func main() {
       var b int = 15
       var a int
       numbers := [6]int{1, 2, 3, 5}
       /* for 循环 */
       for a := 0; a < 10; a++ {
          fmt.Printf("a 的值为: %d\n", a)
       }
       for a < b {
          a++
          fmt.Printf("a 的值为: %d\n", a)
       }
       for i,x:= range numbers {
          fmt.Printf("第 %d 位 x 的值 = %d\n", i,x)
       }
    }
    

    参考资料&&推荐阅读