极速入门 Go 语言.

Go 语言可以称为是 21 世纪的 C 语言了,其不仅具有诸多十分优秀的特性,而且也保持了简洁干练,运行效率也与 C++ 看齐。那么再有其他的语言基础下,如何快速入门 Go 呢?

这篇文章其实更多地是 Go 与其他语言之间的对比,并由此初探 Go,从而达到快速入门的目的。 本文只是 Go 语言入门,其他的 Go 特性操作还需要多加学习。 语言基础要求:CPython(入门即可)

首先是一个正常的 Hello World 代码

    package main

    import "fmt"

    func main() {
        var a string = "Hello, World!"
        b, c := 2, 3
        if(b > c && b < c) {
        fmt.Println(a)
        }
    }
  • package:该文件的包名,同样报名的文件会划归为同一个包,且一个文件夹里面(除去子文件夹)只允许有一个包存在
  • import:Python 中的 import
  • func:定义 function 函数的关键词,与 def 类似
  • main:主程序,作用和地位与 C 相似,传参也和 C 相似
  • var a string:定义一个类型为 string 的变量 a,这是 Go 语言中的格式
  • &&:Go 的运算符和 C 类似
  • fmt.Println:调用了 fmt 中的 Println 函数,与 C 和 Python 差不多

关于数据类型

Go 语言中的变量和类型比较自由,可以直接用上文所述的格式预定义,也可以直接用 := 的符号代替 = 直接定义变量,然后由编译器自动判断数据类型,这一点比 C 要来得方便。

同时 Go 语言的变量是存在缺省值的,如果没有赋值那么就会存在一个默认值。其作用域也和 C、Python 一样,存在形参实参

而且 Go 目前其实也存在很多问题,比如没有溢出安全保护机制,可调用的包和函数并没有 Python 那么多,很多时候还是要靠自己手撸算法,自己造轮子。(比如将多个数组合并,Python 只需要简单的 + 号就能够完成,但是 Go 里面需要无限 append)

结构体和指针

这个就一句话,和 C、C++ 一样

for 循环

    package main

    import "fmt"

    func main() {
        //这是我们使用range去求一个slice的和,使用数组跟这个很类似
        nums := []int{2, 3, 4}
        sum := 0
        for _, num := range nums {
            sum += num
        }
        fmt.Println("sum:", sum)
        //在数组上使用range将传入index和值两个变量,上代码中因为无需指针所以用 _ 代替
        for i, num := range nums {
            if num == 3 {
                fmt.Println("index:", i)
            }
        }
        //range也可以用在map的键值对上
        kvs := map[string]string{"a": "apple", "b": "banana"}
        for k, v := range kvs {
            fmt.Printf("%s -> %s\n", k, v)
        }
        //range也可以用来枚举Unicode字符串。第一个参数是字符的索引,第二个是字符(Unicode的值)本身
        for i, c := range "go" {
            fmt.Println(i, c)
        }
    }

Map(集合)类型

map 类型和 Python 中的字典很像,是无序的键值对。(只不过现在的 Python 变成了有序的了)

包管理

Go 包管理和调用也还方便,基本上是前人栽树,后人乘凉。

总所周知,Go 的包管理是基于 Github 的,也就是可以直接利用 github/xxx/xxx 的形式直接调用别人 master 分支的包,这也就意味着如果别人对其做了改动的话,也容易导致自己的代码出现问题

作为一个在近两年才逐渐得到重视,走上舞台的语言来说,Go 卖出了极其特色的一步,而马上 Go 1.13 版本就要面市,也希望它能够在那个时候带来更加出色的编程体验。

水平有限,若有误欢迎指正;后续会继续对该文做补充。