【Go】Go语言学习笔记-1-简介

争取在入职前把《学习Go语言》这个文档看完,把学习的笔记写在博客中,做为记录,方便之后查阅。git

练习的代码都放在我本身的GitHub中,地址为:
https://github.com/poemqiong/GoExercisesgithub

1. 包阅读方法

例如要查看unicode/utf8包的内容
godoc unicode/utf8 | less数组

2. package和import

pakckage main必须首先出现,而后是import,而后是其余全部内容。当Go程序在执行时,首先调用的函数是main.main().app

3. 编译和运行

编译:go build test.go
直接运行:go run test.goless

4. 分号

若是两个(或更多)语句放在一行书写,它们必须用分号(;)分割,通常状况下,不须要在行末加分号。函数

5. 变量

Go的变量类型不是int a,而是a int。声明和赋值是两个过程。学习

    1. 不一样类型变量的赋值
      (1)
      var a int
      var b bool
      a = 15
      b = false
      (2)
      var {ui

      a int
         b bool

      }
      (3)指针

    2. := 15code

    • := false

    • 相同类型变量的赋值

    a, b := 20, 16
    _, b := 34,35

    注意:

    • _是一个特殊的变量名,任何赋给它的值都会被抛弃。

    • Go的编译器会对声明却未使用的变量报错。

    • 混合使用不一样类型的变量会引发编译器的错误。

    6. 常量

    在Go中,常量在编译时被建立,只能是数字、字符串或者布尔值。

    7. 字符串

    Go中,字符串赋值以后是不能修改的。若是要修改,须要先转换为rune数组(rune是int32的别名)。
    两个字符串相加应该写为
    s := "a" +

    "b"

    而不能写作:
    s := "a"

    • "b"
      由于Go编译器会自动在每一行末尾加上分号。

    8. 运算符

    运算符的优先级,第一行最高,最后一行最低:

    • / % << >> & &^

    • = | ^
      == != < <= > >=
      <-
      &&
      ||

    须要注意的是:

    • &^表示位清除

    • 没有逻辑非!

    • Go不支持运算符重载

    9. 控制结构

    • if else

    • switch

    • goto

    • for

    • break and continue

    • range(迭代器)

    10. array

    array由[n]<type>定义,n标示array的长度,而<type>标示类型。赋值后,不能修改数组的大小,并且全部元素的类型相同。
    一维数组:
    a := [...]int{1,2,3}
    a := [3]int{1,2,3}
    二维数组:
    a := 3int {{1,2}, {3,4}, {5,6}}

    11. slices

    slice与array相似,可是能够添加新的元素,slice是一个指向array的指针,是引用类型(引用类型使用make建立)。
    slice老是与一个固定长度的array成对出现。

    sl := make([]int, 10)

    append

    s0 := []int{0,0}
    s1 := append(s0, 2, 3, 4)

    copy

    • 函数copy从源slice src复制元素到目标dst,而且返回复制的元素的个数。

    • 源和目标能够重叠。

    • 元素复制的数量是len(src)和len(dst)中的最小值。

    12. map

    声明

    • map[<from type>]<to type>

    • 当只须要声明一个map时,使用make的形式:mdays := make(map[string]int)

    添加

    mdays["Jan"] = 31

    判断是否存在

    v, ok := mdays["Jan"]
    若存在的话,ok为true

    删除

    delete(mdays, "Jan")

    13. 小结

    因为第一章是简介,讲的内容比较杂,相信在后续的使用中会愈来愈熟悉这些细节。

    相关文章
    相关标签/搜索