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

时间:2022-11-23 21:54:40

耐心和持久胜过激烈和*。

前言

快速上手一门新的语言,首先要做的就是熟悉新语言的基本语法和基本数据类型,本文将对 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 个关键字。

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

package

声明

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

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

  • 同一个文件夹内,每个 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 等。

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

整形数据类型

有符号整数类型

类型

占用存储空间

表数范围

int8

1字节

一文熟悉 Go 的基础语法和基本数据类型 ~一文熟悉 Go 的基础语法和基本数据类型-1 (-128-127)

int16

2字节

一文熟悉 Go 的基础语法和基本数据类型~一文熟悉 Go 的基础语法和基本数据类型-1 (-32768-32767)

int32

4字节

一文熟悉 Go 的基础语法和基本数据类型~一文熟悉 Go 的基础语法和基本数据类型-1 (-2147483648-2147483647)

int64

8字节

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

无符号整数类型

类型

占用存储空间

表数范围

uint8

1字节

0~255

uint16

2字节

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

uint32

4字节

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

uint64

8字节

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

其他整数类型

类型

有无符号

占用存储空间

表数范围

int


32位系统-4字节, 64位系统-8字节

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

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

uint


32位系统-4字节, 4位系统-8字节

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

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

rune


等价 int32

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

byte


等价 unint8

0~255

浮点数据类型

类型

占用存储空间

表数范围

float32

4字节

-3.403E38~3.403E38

float64

8字节

-1.798E308~1.798E308

字符类型

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

布尔类型

  • 布尔类型在 Go 中对应 ​​bool​​​ 类型,它只允许取值为 ​​true​​​ 和 ​​false​​。
  • 布尔类型占 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 文件访问。
  • 变量声明之后,没有使用,编译时会报错。
  • 类型不匹配不能被赋值。
  • 同一个作用域下,变量只能声明一次。

结尾

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