Go语言编程入门超级指南

2020-01-28 12:01:04王冬梅

        fmt.Printf("[%d] ", i)
    }
    fmt.Println()

    fmt.Print("While模式:")
    j := 0
    for j < upper {
        fmt.Printf("[%d] ", j)
        j++
    }
    fmt.Println()

    fmt.Print("死循环模式:")
    k := 0
    for {
        if (k >= upper) {
            break
        }
        fmt.Printf("[%d] ", k)
        k++
    }
    fmt.Println()
}

分号和花括号
分号由词法分析器在扫描源代码过程自动插入的,分析器使用简单的规则:如果在一个新行前方的最后一个标记是一个标识符(包括像int和float64这样的单词)、一个基本的如数值这样的文字、或break continue fallthrough return ++ – ) }中的一个时,它就会自动插入分号。
分号的自动插入规则产生了“蝴蝶效应”:所有控制结构的左花括号不都能放在下一行。因为按照上面的规则,这样做会导致分析器在左花括号的前方插入一个分号,从而引起难以预料的结果。所以Golang中是不能随便换行的。
3.3 函数

函数有几点不同:

func关键字。
最大的不同就是“倒序”的类型声明。
不需要函数原型,引用的函数可以后定义。这一点很好,真不喜欢C语言里要么将“最底层抽象”的函数放在最前面定义,要么写一堆函数原型声明在最前面。
3.4 集合

Golang提供了数组和Map作为基本数据结构:

数组中的元素会自动初始化,例如int数组元素初始化为0
切片(借鉴Python)的区间跟主流语言一样,都是 “左闭右开”
用 range()遍历数组和Map

package main

import "fmt"

/**
 * Array未初始化:  [0 0 0 0 0]
 * Array赋值:  [0 10 0 20 0]
 * Array初始化:  [0 1 2 3 4 5]
 * Array二维:  [[0 1 2] [1 2 3]]
 * Array切片: [2 3] [0 1 2 3] [2 3 4 5]
 *
 * Map哈希表:map[one:1 two:2 three:3],长度[3]
 * Map删除元素后:map[one:1 three:3],长度[2]
 * Map打印:
 *  one => 1
 *  four => 4
 *  three => 3
 *  five => 5
 */
func main() {
    testArray()
    testMap()
}

func testArray() {