• 一文熟悉 Go 的基础语法和基本数据类型


    耐心和持久胜过激烈和狂热。

    前言

    快速上手一门新的语言,首先要做的就是熟悉新语言的基本语法和基本数据类型,本文将对 Go 语言的基础语法和基本数据类型进行介绍。

    Hello,World!

    记得当初学习 C 语言的时候,第一个演示程序是输出 Hello World!,Go 官网的第一个案例也是输出 Hello,World!

    package main // 包声明
    
    import "fmt" // 包导入
    
    // func 函数关键字
    func main() {
    	fmt.Println("Hello,World!")
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    Hello,World! 输出案例可知:

    • 声明包的关键字是 package
    • 导包的关键字是 import
    • 使用包里面的函数以 包名.函数 这种格式进行。
    • 函数的声明关键字是 func

    有关 main 函数的一些要点

    • main 函数必须在 main 包里。
    • main 函数所在的文件被命名为 main.go 时,可以直接使用 go run ./main.go 命令直接运行程序。
    • main 函数所在的文件名字不为 main.go,需要分以下两种情况,假设所在文件的名字为 a.go
      • 1、当 a.go 文件里没有引用其他文件的变量等元素时,可以直接使用 go run ./a.go 运行。
        package main // 包声明
        
        import "fmt" // 包导入
        
        // func 函数关键字
        func main() {
        	fmt.Println("Hello,World!")
        }
        
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        D:\go_projects\src\go_basic> go run .\main.go
        Hello,World!
        
        • 1
        • 2
      • 2、当 a.go 文件里有引用其他文件的变量等元素时,需要先使用 go build ./a.go ./b.go 生成可执行文件,再运行 exe 可执行文件。
        package main // a.go 文件
        
        import "fmt"
        
        func main() {
        	fmt.Println(name)
        }
        
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        package main // b.go 文件
        
        var name string = "cmy"
        
        
        • 1
        • 2
        • 3
        • 4
        D:\go_projects\src\go_basic> go run .\a.go
        # command-line-arguments
        .\a.go:6:14: undefined: name
        
        • 1
        • 2
        • 3
        D:\go_projects\src\go_basic> go build .\a.go .\b.go
        D:\go_projects\src\go_basic> ls
        
            目录: D:\go_projects\src\go_basic
        Mode                 LastWriteTime         Length Name
        ----                 -------------         ------ ----
        d-----        2022-11-23      1:39                .idea
        -a----        2022-11-23      2:03        1950720 a.exe
        -a----        2022-11-23      1:50             63 a.go
        -a----        2022-11-23      1:52             38 b.go
        -a----        2022-11-23      1:57            127 main.go
        
        D:\go_projects\src\go_basic> .\a.exe
        cmy
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
        • 7
        • 8
        • 9
        • 10
        • 11
        • 12
        • 13
        • 14

    关键字

    除了上面提到的几个关键字以外,Go 语言还有其他关键字,一共 25 个关键字。
    在这里插入图片描述

    package

    声明

    • 语法格式: package xxx
      package main
      
      • 1
    • 包名字由英文或英文与下划线组合组成。
    • 注意点:
      • 包声明时名字可以和文件夹的命名不一样。
        在这里插入图片描述
      • 同一个文件夹内,每个 Go 文件的包声明必须一致,否则会报错。
        package hello // a.go 文件
        
        
        • 1
        • 2
        package hello // b.go 文件
        
        
        • 1
        • 2

    引入

    • 包的引入方式:import [alias] xxx,alice 是一个可选值,为包起别名。
      import "fmt"
      
      import f "fmt" // 起别名
      
      • 1
      • 2
      • 3
    • 注意点:
      • 引入包而没有使用,会报错。
      • 匿名引入:
        import _ "fmt" // 起别名
        
        • 1
        一般匿名引入,是为了使用包里面的 init 函数,它先于 main 函数之前执行
        func init() {
        	
        }
        
        • 1
        • 2
        • 3

    基本数据类型

    Go 语言中的数据类型有很多,除了本文介绍的基本数据类型以外,还有指针、数组、结构体 struct、管道 channel、函数 func 、切片 slice 、接口 interface、map 等。
    在这里插入图片描述

    整形数据类型

    有符号整数类型

    类型占用存储空间表数范围
    int81字节 − 2 7 -2^{7} 27 ~ 2 7 2^{7} 27-1 (-128-127)
    int162字节 − 2 15 -2^{15} 215 ~ 2 15 2^{15} 215-1 (-32768-32767)
    int324字节 − 2 31 -2^{31} 231 ~ 2 31 2^{31} 231-1 (-2147483648-2147483647)
    int648字节 − 2 63 -2^{63} 263 ~ 2 63 2^{63} 263-1

    无符号整数类型

    类型占用存储空间表数范围
    uint81字节0~255
    uint162字节0~ 2 16 2^{16} 216-1
    uint324字节0~ 2 31 2^{31} 231-1
    uint648字节0~ 2 63 2^{63} 263-1

    其他整数类型

    类型有无符号占用存储空间表数范围
    int32位系统-4字节, 64位系统-8字节 − 2 31 -2^{31} 231 ~ 2 31 2^{31} 231-1, − 2 63 -2^{63} 263 ~ 2 63 2^{63} 263-1
    uint32位系统-4字节, 4位系统-8字节0 ~ 2 31 2^{31} 231-1, 0~ 2 64 2^{64} 264-1
    rune等价 int32 − 2 31 -2^{31} 231 ~ 2 31 2^{31} 231-1
    byte等价 unint80~255

    浮点数据类型

    类型占用存储空间表数范围
    float324字节-3.403E38~3.403E38
    float648字节-1.798E308~1.798E308

    字符类型

    • Go 没有字符类型,如果要存单个字符(字母),可使用 byte 类型代替。
    • Go 中字符使用 UTF-8 编码。

    布尔类型

    • 布尔类型在 Go 中对应 bool 类型,它只允许取值为 truefalse
    • 布尔类型占 1 个字节。
    • 布尔类型适用于逻辑运算,一般用于程序流程控制。

    字符串类型

    • 字符串不可变(指的是其中字符的值不能变,例如 var name string = "cmy",然后操作 name[0]='a' 是不行的)。
    • 如果字符串中需要换行或者字符串较复杂,可以使用反引号 ``。

    基本数据类型的默认值

    数据类型默认值
    整数类型0
    浮点类型0
    布尔类型false
    字符串类型“”

    常量和变量声明

    • 常量声明:const xxx type = value
      const realName string = "chenmingyong"
      const Age int = 18
      
      • 1
      • 2
    • 变量声明:var xxx type = value
      var realName string = "chenmingyong"
      var Age int = 18
      
      • 1
      • 2
      在定义局部变量(方法或函数内部的变量)时,还可以使用 := 去声明,切记是局部变量,全局变量不能使用 :=,否则会报错。
      realName := "chenmingyong"
      Age := 18
      
      • 1
      • 2
      Go 会使用类型推断来判断类型,数字会被理解为 int 或者 float64,字符串会被理解为 string
    • 注意点:
      • Go 推荐使用驼峰命名的方式。
      • 常量被声明后,后续的值不能被修改。
      • 常量和变量的名字,首字母是否大写,决定着它是否能够被包外文件访问,大写则可以被包外的 Go 文件访问,小写则认为是私有的,只能被包内的 Go 文件访问。
      • 变量声明之后,没有使用,编译时会报错。
      • 类型不匹配不能被赋值。
      • 同一个作用域下,变量只能声明一次。

    结尾

    如果本文对你有帮助,欢迎点赞收藏加关注,如果本文有错误的地方,欢迎指出!

  • 相关阅读:
    锁的概念!
    gRPC之API详解
    只因程序员写了一段爬虫,公司200人被端,是种什么体验?
    GPT学习笔记-Embedding的降维与2D,3D可视化
    【ThreeJs】moving model
    Kotlin学习之2
    效率工具之Arthas
    torchscript相关知识介绍(一)
    发明专利和实用新型专利的区别
    no main manifest attribute, in xxx.jar
  • 原文地址:https://blog.csdn.net/weixin_44604586/article/details/127991751