写点什么

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

作者:陈明勇
  • 2022-11-23
    广东
  • 本文字数:2082 字

    阅读完需:约 7 分钟

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

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

前言

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

Hello,World!

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


package main // 包声明
import "fmt" // 包导入
// func 函数关键字func main() { fmt.Println("Hello,World!")}
复制代码


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!")    }
复制代码


    D:\go_projects\src\go_basic> go run .\main.go    Hello,World!
复制代码
  • 2、当 a.go 文件里有引用其他文件的变量等元素时,需要先使用 go build ./a.go ./b.go 生成可执行文件,再运行 exe 可执行文件。

    package main // a.go 文件        import "fmt"        func main() {      fmt.Println(name)    }
复制代码


    package main // b.go 文件        var name string = "cmy"
复制代码


    D:\go_projects\src\go_basic> go run .\a.go    # command-line-arguments    .\a.go:6:14: undefined: name
复制代码


    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
复制代码

关键字

除了上面提到的几个关键字以外,Go 语言还有其他关键字,一共 25 个关键字。


package

声明

  • 语法格式: package xxx


  package main
复制代码


  • 包名字由英文或英文与下划线组合组成。

  • 注意点:

  • 包声明时名字可以和文件夹的命名不一样。

  • 同一个文件夹内,每个 Go 文件的包声明必须一致,否则会报错。

    package hello // a.go 文件
复制代码


    package hello // b.go 文件
复制代码

引入

  • 包的引入方式:import [alias] xxxalice 是一个可选值,为包起别名。


  import "fmt"    import f "fmt" // 起别名
复制代码


  • 注意点:

  • 引入包而没有使用,会报错。

  • 匿名引入:

    import _ "fmt" // 起别名
复制代码

一般匿名引入,是为了使用包里面的 init 函数,它先于 main 函数之前执行

    func init() {          }
复制代码

基本数据类型

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


整形数据类型

有符号整数类型


无符号整数类型


其他整数类型


浮点数据类型


字符类型

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

  • Go 中字符使用 UTF-8 编码。

布尔类型

  • 布尔类型在 Go 中对应 bool 类型,它只允许取值为 truefalse

  • 布尔类型占 1 个字节。

  • 布尔类型适用于逻辑运算,一般用于程序流程控制。

字符串类型

  • 字符串不可变(指的是其中字符的值不能变,例如 var name string = "cmy",然后操作 name[0]='a' 是不行的)。

  • 如果字符串中需要换行或者字符串较复杂,可以使用反引号 ``。

基本数据类型的默认值


常量和变量声明

  • 常量声明:const xxx type = value


  const realName string = "chenmingyong"  const Age int = 18
复制代码


  • 变量声明:var xxx type = value


  var realName string = "chenmingyong"  var Age int = 18
复制代码


在定义局部变量(方法或函数内部的变量)时,还可以使用 := 去声明,切记是局部变量,全局变量不能使用 :=,否则会报错。

  realName := "chenmingyong"  Age := 18
复制代码

Go 会使用类型推断来判断类型,数字会被理解为 int 或者 float64,字符串会被理解为 string

  • 注意点:

  • Go 推荐使用驼峰命名的方式。

  • 常量被声明后,后续的值不能被修改。

  • 常量和变量的名字,首字母是否大写,决定着它是否能够被包外文件访问,大写则可以被包外的 Go 文件访问,小写则认为是私有的,只能被包内的 Go 文件访问。

  • 变量声明之后,没有使用,编译时会报错。

  • 类型不匹配不能被赋值。

  • 同一个作用域下,变量只能声明一次。

结尾

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

发布于: 刚刚阅读数: 4
用户头像

陈明勇

关注

一个热爱技术,喜欢专研技术的程序员。 2021-10-20 加入

还未添加个人简介

评论

发布
暂无评论
一文熟悉 Go 的基础语法和基本数据类型_Go_陈明勇_InfoQ写作社区