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

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

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

哈喽大家好,我是陈明勇,本文分享的内容是 Go 的基础语法和基本数据类型。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨点个关注,一起成长一起进步,如果本文有错误的地方,欢迎指出!

前言

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

Hello,World!

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

packagemain// 包声明import"fmt"// 包导入// func 函数关键字funcmain() {
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 运行。
packagemain// 包声明import"fmt"// 包导入// func 函数关键字funcmain() {
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` 可执行文件。
packagemain// a.go 文件import"fmt"funcmain() {
fmt.Println(name)
}
packagemain// b.go 文件varnamestring="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-231:39                .idea
-a----2022-11-232:03        1950720 a.exe
-a----2022-11-231:50             63 a.go
-a----2022-11-231:52             38 b.go
-a----2022-11-231:57            127 main.go
D:\go_projects\src\go_basic> .\a.exe
cmy

关键字

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

1.jpg

package

声明

  • 语法格式: package xxx
packagemain
  • 包名字由英文或英文与下划线组合组成。
  • 注意点:
  • 包声明时名字可以和文件夹的命名不一样。

      2.jpg

packagehello// a.go 文件
packagehello// b.go 文件

引入

  • 包的引入方式:import [alias] xxx,alice 是一个可选值,为包起别名。
import"fmt"importf"fmt"// 起别名
  • 注意点:
  • 引入包而没有使用,会报错。
  • 匿名引入:
import_"fmt"// 起别名

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

funcinit() {
}

基本数据类型

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

3.jpg

整形数据类型

有符号整数类型

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


无符号整数类型

类型 占用存储空间 表数范围
uint8 1字节 0~255
uint16 2字节 0~216216-1
uint32 4字节 0~231231-1
uint64 8字节 0~263263-1

其他整数类型

类型 有无符号 占用存储空间
int 32位系统-4字节, 64位系统-8字节
uint 32位系统-4字节, 4位系统-8字节
rune 等价 int32
byte 等价 unint8


浮点数据类型

类型 占用存储空间 表数范围
float32 4字节 -3.403E38~3.403E38
float64 8字节 -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
constrealNamestring="chenmingyong"constAgeint=18
  • 变量声明: var xxx type = value
varrealNamestring="chenmingyong"varAgeint=18

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

realName :="chenmingyong"Age :=18

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

  • 注意点:
  • Go 推荐使用驼峰命名的方式。
  • 常量被声明后,后续的值不能被修改。
  • 常量和变量的名字,首字母是否大写,决定着它是否能够被包外文件访问,大写则可以被包外的 Go 文件访问,小写则认为是私有的,只能被包内的 Go 文件访问。
  • 变量声明之后,没有使用,编译时会报错。
  • 类型不匹配不能被赋值。
  • 同一个作用域下,变量只能声明一次。

结尾

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

目录
相关文章
|
6天前
|
存储 编译器 Go
Go to Learn Go之基本数据类型
Go to Learn Go之基本数据类型
12 0
|
6天前
|
Java 编译器 Go
Go to Learn Go之基础语法
Go to Learn Go之基础语法
|
2月前
|
消息中间件 存储 NoSQL
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
本文档介绍了如何使用 Go 语言中的 `go-redis` 库操作 Redis 数据库
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
|
2月前
|
存储 编译器 Go
Go从入门到放弃之数据类型
Go从入门到放弃之数据类型
|
3月前
|
Go
GO 指针数据类型的使用
GO 指针数据类型的使用
15 0
|
4月前
|
存储 Java Go
|
4月前
|
编译器 Go 开发者
|
4月前
|
Go 数据库
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
Go语言之GORM框架(四)——预加载,关联标签与多态关联,自定义数据类型与事务(完结篇)
|
4月前
|
Go
go基础语法结束篇 ——函数与方法
go基础语法结束篇 ——函数与方法
|
4月前
|
编译器 Go 数据安全/隐私保护
go语言入门之路——基础语法
go语言入门之路——基础语法
下一篇
无影云桌面