【每天学点 Go 知识】Go 基础知识 + 基本数据类型快速入门
😄作者简介: 小曾同学.com,一个致力于测试开发的博主⛽️,主要职责:测试开发、CI/CD
如果文章知识点有错误的地方,还请大家指正,让我们一起学习,一起进步。
😊 座右铭:不想当开发的测试,不是一个好测试✌️。
如果感觉博主的文章还不错的话,还请点赞、收藏哦!👍
文章目录
- 一、快速入门
- Go 程序开发注意事项
- Go 中常用的转义字符
- 自动规范格式
- 二、变量
- 多变量声明
- 变量使用注意事项
- 三、变量的基本数据类型
- 字符类型使用细节
- 基本数据类型默认值
Go 是静态语言也是动态语言,,使用一个表达式来形容 Go 语言,Go = C + Python ,说明 Go 语言既有 C 静态语言程序的运行速度,又能达到 Python 动态语言的快速开发。
一、快速入门
在 Go 中,.go 文件必须归属于一个包
package main
import fmt
func main() {fmt.Println("hello")
}
如何运行 go 文件
方式一:先编译成二进制再运行
go build main.go //先编译成main 二进制,然后再运行二进制
./main
方式二:直接运行
go run main.go // 运行的较慢,因为要先编译才运行
如果在mac上想编译成在 linux 上可运行的二进制,则使用交叉编译
GOOS=linux GOARCH=amd64 go build hello.go
所以由此可得出 go 的执行流程:.go 文件——go build 编译成可执行文件,运行结果。生成的可执行文件可以放在没有 go 环境的平台中运行。(将源码编译二进制文件)
Go 程序开发注意事项
- Go 源文件以 go 为扩展名
- Go 应用程序的执行入口是 main() 函数
- Go 语言严格区分大小写
- Go 方法是由一条条语句构成,每个语句后需要分号,Go语言会在每行后自动加分号,体现了Golang的简洁性
- Go 编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多余语句写在同一行,否则报错
- Go 语言定义的变量或者 import的包,如果没有使用到,代码不能编译通过
- 大括号都是成对出现的,缺一不可。
Go 中常用的转义字符
转义字符基本是每个语言都要学习的内容
func main() {fmt.Println("姓名\t年龄\t籍贯\t住址\njenny\t18\tSH\tSH")
}
自动规范格式
如果写完代码之后,格式有点乱糟糟的,可以使用一键对齐
gofmt -w main.go
二、变量
众所周知,变量表示内存中的一个存储空间,
三种变量创建及使用方式
指定变量类型,声明后若不赋值,使用默认值
var a int = 3
根据值自行判定变量类型
var b = 6
省略 var,使用:=,:=左侧的变量不应该是已经声明过的,否则会导致编译错误
c := 8
注意: 运算符两边习惯各加一个空格,另外需要知晓的是程序是在内存中运行。
func main() {var i int = 10i = 112fmt.Println(i)var n = "zeng"fmt.Println(n)j := 100fmt.Println(j)
}
多变量声明
func main() {var i,j int fmt.Println(i,j)var i1,j1 int =100,200fmt.Println(i1,j1)n1,n2 := 10,11fmt.Println(n1,n2)var (z1 = 100z2 = 200z3 = "zeng")fmt.Println(z1,z2,z3)
}
变量使用注意事项
改区域的数据值可以在统一类型范围内不断变化
变量在同一个作用域内不能重名
变量 = 变量名+值+数据类型
golang 的变量如果没有赋值,编译器会使用默认值,int 的默认值为 0,string 的默认值为空串。
三、变量的基本数据类型
golang 程序中整型变量在使用时,遵守保小不保大的原则,即 在保证程序正确运行下,尽量使用占用空间小的数据类型
-
数值型
整数类型(默认为 int 类型)int、int8、int16、int32、int64
uint、uint8、uint16、uint32、uint64、byte(无符号)
注意:
bit 计算机中的最小存储单位
byte 计算机中基本的存储单元
1byte = 8bit
-
浮点类型(默认 float64)
-
float64 的精度比 float32 的要准确,如果要保存一个精度高的数,则应该选择 float64
-
在相同的占用字节大小的情况下,浮点数比整数能够存储的数据要大
浮点数使用细节
-
Golang 浮点类型有固定的范围和字段长度,不受具体操作系统的影响
-
Golang 的浮点型默认声明为 float64 类型
-
浮点型常量有两种表示形式
十进制数形式,如 5.12
科学计数法形式:5.1234e2 = 5.12*10^2
-
通常情况下,应用使用 float64,因为它比 float32 更精确
-
-
字符型
(没有专门的字符型,使用 byte 来保存单个字母字符)func main() {var n1 byte = 'a'fmt.Println(n1) //97fmt.Printf("n1=%c", n1) }
字符类型使用细节
-
字符常量是用单引号括起来的单个字符,例如var n1 byte = ‘a’
-
go 中允许使用转义字符\ 来将其后的字符转变为特殊字符
-
go 语言的字符使用的 UTF-8 编码,英文字母是 1 个字节,汉子是 3 个字节。
-
在 Go 中,字符的本质是一个整数,直接输出是,是该字符对应的 UTF-8 编码的码值
-
可以直接给某个变量赋一个数字,然后按格式化输出时 %c,会输出该数字对应的 unicode字符
-
字符类型中可以进行运算的,相当于一个整数,因为它都对应有 unicode 码。
-
布尔型(bool)
bool 的值只允许 true 和 false
bool 类型占 1 个字节
-
字符串(string)
(在 go 中字符串是基本数据类型) -
Go 语言的字符串的字节使用UTF-8编码标识Unicode 文本,这样Golang统一使用UTF-8编码,中文乱码问题不会再有困扰
-
字符串一旦赋值,字符串就不能修改了,在go中字符串是不可变的
-
字符串的两种标识
双引号,会识别转义字符
反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击,输出源代码等效果。
func main() {// var str string = "hello"// str[0] = 'a' //不能修改str的内容,即go中的字符串是不可变的str2 := "adb\naaa"fmt.Println(str2)str3 := `str2 := "adb\naaa"fmt.Println(str2)`fmt.Println(str3)var str4 = "hello"+"hello"+"hello"+"hello"+"hello"+"hello"fmt.Println(str4)
基本数据类型默认值
示例
func main() {var a int //0var b string //""var c float32//0var d float64 //0var e bool//falsefmt.Printf("a=%d,b=%v,c=%v,d=%v,e=%v", a, b, c, d, e)
}
上述就是 golang 中变量的基本数据类型,当然还有一些派生/复杂数据类型,比如 指针(Pointer)、数组、结构体(Channel)、函数、切片、接口、map。后续文章会详细介绍。