• 标识符规则

    • Unicode编码字符或者_开头,但是不能数字开头,后面可以跟n个字符;

    • _是特殊标识符,叫做空白标识符,赋的值会被抛弃;

      image-20230301161309009

      image-20230301161250971

    • 标识符大写字母开头表示外部可引用,小写开头外部无法引用,相当于public private

  • 函数

    函数也是标识符的一种,

    函数基本格式

    func add(a, b) (c int) {
      return a + b
    }
    
    func add2(a, b) int {
      return a + b
    }
    
    func add3(a int, b int) int {
      return a + b
    }
    func hello(a string, b string) (string, string) {
      return a, b
    }

    一般来说mian函数是第一个执行的函数,但是如果存在init函数,则init先执行

    package main
    
    func main() {
      println("我是main,我执行了")
    }
    
    func init() {
      println("我是init,我执行了")
    }
    我是init,我执行了
    我是main,我执行了
  • 数据类型

    数据类型包括基本数据类型和复杂的数据类型

    • 基本类型

      • int
      • float
      • bool
      • string
    • 复杂类型

      • struct
      • array
      • 切片
      • map
      • 通道
    • 抽象的

      • interface
    • 自定义类型

      type MyInt int
      
      type (
          MyInt int
          MyStrinf string
      )

    Go语言的数据类型不支持隐式转换,只能显示转换,Go 是强类型语言

    valueB=typeB(valueA)
  • 常量

    常量必须在编译阶段就确认值,所以类似随机函数相关的就无法赋值使用

    iota是Go的一个常量计数器,在每遇到一个新的常量块或单个常量声明时, iota 都会重置为 0

    const a = iota
    
    const (
      b1 = iota
      b2 = iota
      b3 = iota
    )
    
    const (
      c1 = iota
      c2 = iota
    )
    
    func main() {
      fmt.Printf("a=%d\n", a)
      fmt.Printf("b1=%d,b2=%d,b3=%d\n", b1, b2, b3)
      fmt.Printf("c1=%d,c2=%d", c1, c2)
    }

    image-20230301164454802

  • 变量

    var name type = value

    其中type可以省略,Go会自动推断,可以根据变量的值在编译时确定数据类型,同时Go的数据类型也可以在运行时推断。

    这种写法是Go的简写声明方式,但是只能用于函数内部

    a := 1
  • 值类型和引用类型