当前位置

网站首页> 程序设计 > 开源项目 > 程序开发 > 浏览文章

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

作者:小梦 来源: 网络 时间: 2024-02-28 阅读:

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

练习的代码都放在我自己的GitHub中,地址为:
https://github.com/poemqiong/GoExercises

1. 包阅读方法

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

2. package和import

pakckage main必须首先出现,然后是import,然后是其他所有内容。当Go程序在执行时,首先调用的函数是main.main().

3. 编译和运行

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

4. 分号

如果两个(或更多)语句放在一行书写,它们必须用分号(;)分割,一般情况下,不需要在行末加分号。

5. 变量

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

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

         a int   b bool

      }
      (3)

    2. := 15

    • := 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. 小结

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

    热点阅读

    网友最爱