一文熟悉 Go 的基础语法和基本数据类型
创始人
2024-02-10 16:29:54
0

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

  • 前言
  • Hello,World!
    • 有关 main 函数的一些要点
  • 关键字
  • package
    • 声明
    • 引入
  • 基本数据类型
    • 整形数据类型
      • 有符号整数类型
      • 无符号整数类型
      • 其他整数类型
    • 浮点数据类型
    • 字符类型
    • 布尔类型
    • 字符串类型
    • 基本数据类型的默认值
  • 常量和变量声明
  • 结尾

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

前言

快速上手一门新的语言,首先要做的就是熟悉新语言的基本语法和基本数据类型,本文将对 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.goD:\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] xxx,alice 是一个可选值,为包起别名。
    import "fmt"import f "fmt" // 起别名
    
  • 注意点:
    • 引入包而没有使用,会报错。
    • 匿名引入:
      import _ "fmt" // 起别名
      
      一般匿名引入,是为了使用包里面的 init 函数,它先于 main 函数之前执行
      func init() {}
      

基本数据类型

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

整形数据类型

有符号整数类型

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

无符号整数类型

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

其他整数类型

类型有无符号占用存储空间表数范围
int32位系统-4字节, 64位系统-8字节−231-2^{31}−231 ~ 2312^{31}231-1, −263-2^{63}−263 ~ 2632^{63}263-1
uint32位系统-4字节, 4位系统-8字节0 ~ 2312^{31}231-1, 0~2642^{64}264-1
rune等价 int32−231-2^{31}−231 ~ 2312^{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
    
  • 变量声明:var xxx type = value
    var realName string = "chenmingyong"
    var Age int = 18
    
    在定义局部变量(方法或函数内部的变量)时,还可以使用 := 去声明,切记是局部变量,全局变量不能使用 :=,否则会报错。
    realName := "chenmingyong"
    Age := 18
    
    Go 会使用类型推断来判断类型,数字会被理解为 int 或者 float64,字符串会被理解为 string
  • 注意点:
    • Go 推荐使用驼峰命名的方式。
    • 常量被声明后,后续的值不能被修改。
    • 常量和变量的名字,首字母是否大写,决定着它是否能够被包外文件访问,大写则可以被包外的 Go 文件访问,小写则认为是私有的,只能被包内的 Go 文件访问。
    • 变量声明之后,没有使用,编译时会报错。
    • 类型不匹配不能被赋值。
    • 同一个作用域下,变量只能声明一次。

结尾

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

相关内容

热门资讯

【湖城调解】工作风采:枣强县司... 编者按:为进一步加大人民调解工作宣传力度,不断提高人民调解工作的群众知晓率、首选率、满意率,为人民调...
俄海军副司令被暗杀后,11个小... 当地时间2025年7月4日凌晨,乌克兰首都基辅遭遇了俄乌战争中,最密集的自杀式无人机与弹道导弹轰炸,...
终于!今晚,央视要直播了 新周期新面孔新起点新气象? 北京时间7月7日19时,2025东亚杯将在韩国揭幕,全新面貌的男足国家队...
傲农生物近期新增诉讼仲裁金额达... 财中社7月7日电傲农生物(603363)发布公告,2025年3月10日至今,公司新增涉及诉讼、仲裁事...
政策持续显效 房地产市场运行总... 今年以来,随着各项稳定房地产政策加快落实,房地产市场继续朝着止跌回稳的方向迈进。中指研究院认为,上半...
长海股份:公司严格遵守法律法规... 金融界7月7日消息,有投资者在互动平台向长海股份提问:贵公司目前股价已经跌破公告的净资产,请公司负责...
律师称男子将私家车改装成警车或... 大象新闻记者 孙健 近日,沈阳一男子将私家车改装为一辆警车,不仅安装了假车牌警灯,还有警报器。他驾驶...
躬身法援,法润高原!深圳律师肖... 去年9月,深圳市罗湖区北京德恒(深圳)律师事务所肖黄鹤律师积极响应司法部号召,主动报名参加“1+1”...
金毛餐馆蹭空调避暑遭殴打后死亡... 近日,在湖南永州,一只叫“李墩墩”的金毛犬从家中“越狱”。因天气炎热,走进一家餐馆蹭空调避暑,不料在...
东营市委常委、常务副市长何宪卓... 澎湃新闻获悉,此前担任山东东营市委常委、常务副市长的何宪卓,已任山东广播电视台党委书记、台长。 何宪...