当前位置: 首页 > news >正文

【每天学点 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 程序开发注意事项

  1. Go 源文件以 go 为扩展名
  2. Go 应用程序的执行入口是 main() 函数
  3. Go 语言严格区分大小写
  4. Go 方法是由一条条语句构成,每个语句后需要分号,Go语言会在每行后自动加分号,体现了Golang的简洁性
  5. Go 编译器是一行行进行编译的,因此我们一行就写一条语句,不能把多余语句写在同一行,否则报错
  6. Go 语言定义的变量或者 import的包,如果没有使用到,代码不能编译通过
  7. 大括号都是成对出现的,缺一不可。

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 程序中整型变量在使用时,遵守保小不保大的原则,即 在保证程序正确运行下,尽量使用占用空间小的数据类型

  1. 数值型
    整数类型(默认为 int 类型)

    int、int8、int16、int32、int64
    在这里插入图片描述

    uint、uint8、uint16、uint32、uint64、byte(无符号)
    在这里插入图片描述
    在这里插入图片描述

    注意:

    bit 计算机中的最小存储单位

    byte 计算机中基本的存储单元

    1byte = 8bit

  2. 浮点类型(默认 float64)
    在这里插入图片描述

    • float64 的精度比 float32 的要准确,如果要保存一个精度高的数,则应该选择 float64

    • 在相同的占用字节大小的情况下,浮点数比整数能够存储的数据要大

    浮点数使用细节

    1. Golang 浮点类型有固定的范围和字段长度,不受具体操作系统的影响

    2. Golang 的浮点型默认声明为 float64 类型

    3. 浮点型常量有两种表示形式

      十进制数形式,如 5.12

      科学计数法形式:5.1234e2 = 5.12*10^2

    4. 通常情况下,应用使用 float64,因为它比 float32 更精确

  3. 字符型
    (没有专门的字符型,使用 byte 来保存单个字母字符)

    func main() {var n1 byte = 'a'fmt.Println(n1) //97fmt.Printf("n1=%c", n1)
    }
    

字符类型使用细节

  1. 字符常量是用单引号括起来的单个字符,例如var n1 byte = ‘a’

  2. go 中允许使用转义字符\ 来将其后的字符转变为特殊字符

  3. go 语言的字符使用的 UTF-8 编码,英文字母是 1 个字节,汉子是 3 个字节。

  4. 在 Go 中,字符的本质是一个整数,直接输出是,是该字符对应的 UTF-8 编码的码值

  5. 可以直接给某个变量赋一个数字,然后按格式化输出时 %c,会输出该数字对应的 unicode字符

  6. 字符类型中可以进行运算的,相当于一个整数,因为它都对应有 unicode 码。

  7. 布尔型(bool)

    bool 的值只允许 truefalse
    

    bool 类型占 1 个字节

  8. 字符串(string)
    (在 go 中字符串是基本数据类型)

  9. Go 语言的字符串的字节使用UTF-8编码标识Unicode 文本,这样Golang统一使用UTF-8编码,中文乱码问题不会再有困扰

  10. 字符串一旦赋值,字符串就不能修改了,在go中字符串是不可变的

  11. 字符串的两种标识
    双引号,会识别转义字符
    反引号,以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击,输出源代码等效果。

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。后续文章会详细介绍。

相关文章:

  • 【Hot 100】139. 单词拆分
  • arduino Nano+asrpro2.0制作桌面宠物
  • (javaEE)网络原理-初识 局域网和广域网 ip地址和端口号 协议 五元组 协议分层 OSI七层模型 网络数据通信的基本流程
  • 全球人工智能技术大会(GAITC 2025):技术前沿与产业融合的深度交响
  • Go内存池设计与实现:减少GC压力
  • **解锁 C++ std::map 的力量**
  • 26考研——数据的表示和运算_整数和实数的表示(2)
  • 2025-06-01-Hive 技术及应用介绍
  • 【hive】函数集锦:窗口函数、列转行、日期函数
  • QT的工程文件.pro文件
  • 使用 IntelliJ IDEA 安装通义灵码(TONGYI Lingma)插件,进行后端 Java Spring Boot 项目的用户用例生成及常见问题处理
  • 25.【.NET8 实战--孢子记账--从单体到微服务--转向微服务】--单体转微服务--用户服务接口
  • SQL手工测试(MySQL数据库)
  • 树莓派超全系列教程文档--(58)通过网络启动树莓派
  • 【LeetCode 热题100】网格路径类 DP 系列题:不同路径 最小路径和(力扣62 / 64 )(Go语言版)
  • 第6章:Neo4j数据导入与导出
  • 自定义连接线程池
  • 408第一季 - 数据结构 - 图
  • mybatis执行insert如何返回id
  • 星耀8上市品鉴暨北京中和吉晟吉利银河用户中心开业媒体见面会
  • wordpress 数据库名/株洲seo优化推荐
  • 电脑自带的做网站叫什么软件/怎样自己制作网站
  • 上传图片到 wordpress评论/南京百度seo排名
  • 香港网站建设 深圳分公司/seo日常工作内容
  • 公司网站建设的费用/广州seo效果
  • 淘宝网站是怎么做的吗/百度高级搜索页面