【Golang】第二弹-----变量、基本数据类型、标识符

devtools/2025/3/18 2:41:39/

 笔上得来终觉浅,绝知此事要躬行

🔥 个人主页:星云爱编程

🔥 所属专栏:Golang

🌷追光的人,终会万丈光芒  

 🎉欢迎大家点赞👍评论📝收藏⭐文章

  

目录

一、变量

1.1基本介绍

1.2变量的使用

1.3变量使用注意事项

二、数据类型

2.1基本介绍

 2.2整数类型

2.2.1基本介绍

2.2.2整数的各个类型

 2.2.3使用细节

2.3浮点类型

2.3.1基本介绍

2.3.2浮点类型分类

2.3.3使用细节

2.4字符类型

2.4.1基本介绍

2.4.2使用细节

2.4布尔类型

2.5string类型

2.5.1基本介绍

2.5.2使用细节

 2.6基本数据类型的默认值

2.7基本数据类型之间的相互转换 

2.7.1基本语法

2.7.2使用细节

2.8基本数据类型和string间的转换

2.8.1基本数据类型转string

 2.8.2 string类型转基本数据类型

三、标识符

3.1基本介绍

3.2标识符命名规则

3.3标识符命名注意事项

结语


一、变量

1.1基本介绍

变量是程序的基本组成单位,变量相当于内存中一个数据储存空间的表示。

1.2变量的使用

(1)声明变量

基本语法:var 变量名 数据类型

(2)非变量赋值

(3)使用变量

例如:

package main
import "fmt"func main(){var i int//1定义变量i=10  //2给变量赋值fmt.Printf("i=%d",i)//3使用变量
}

1.3变量使用注意事项

(1)变量表示内存中的一个存储区域,该区域有自己的名称和类型;

(2)Golang变量使用的三种方式:

①指定变量类型,声明后若不赋值,使用默认值

②根据值自行判断变量类型

省略var,注意:=左边的变量不能是已经声明的,否则会导致编译报错

(3)Golang中可以一次性声明多个变量

例:

package main
import "fmt"func main(){name ,class,age:="jack","软工1班",19fmt.Printf("name=%v,class=%v,age=%v",name,class,age)}

如何一次性声明多个全局变量:

package main
import "fmt"//定义全局变量
var a int =5
var b float32=3.6
var c string="csdn"
//一次性声明多个全局变量
var (d=5e=7f="big"
)func main(){name ,class,age:="jack","软工1班",19fmt.Printf("name=%v,class=%v,age=%v",name,class,age)}

(4)变量在同一个作用域不能重名;

(5)变量=变量名+值+数据类型,这是变量的三要素;

(6) 变量在声明时如果没有赋值,则会使用默认值,int为0,string默认为空串;

若声明时给变量赋值,则可以省略数据类型,例如:var n=400;

二、数据类型

2.1基本介绍

 如上图,go的数据类型非常多,这里我们只讲基本数据类型,复杂数据类型在后面的文章再叙。

 2.2整数类型

2.2.1基本介绍

用于存放整数值的类型

2.2.2整数的各个类型

类型有无符号占用存储空间取值范围
int81byte-128~127
int162byte-2^15~2^15-1
int324byte-2^31~2^31-1
int648byte-2^63~2^63-1
uint81byte0~255
uint162byte0~2^16-1
uint324byte0~2^32-1
uint648byte0~2^64-1

 2.2.3使用细节

(1)Golang的整形默认声明为int型

var n=6//n的数据类型为int

 (2)在声明int型时,默认为int32类型

var n int =100//这里的int为int32
m:=200

 (3)如何查看某个变量的大小和数据类型

var n int=100fmt.Printf("n的数据类型为%T,  大小为%d字节",n,unsafe.Sizeof(n))

(4)Golang程序中,整形变量采用保小不保大的原则,即:在保证程序正常运行的情况下,尽量使用占用空间小的数据类型。

2.3浮点类型

2.3.1基本介绍

浮点类型即小数类型,是用来存放小数的。

2.3.2浮点类型分类

类型占用存储空间表示范围
float324byte-3.403E38~3.403E38
float648byte-1.798E308~1.798E308

2.3.3使用细节

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

(2)Golang浮点型默认声明为float64类型

var n=3.14
fmt.Printf("n的数据类型为%T",n)

(3)浮点数在机器中的存放形式:浮点数=符号位+指数位+位数位,故浮点数都是有符号的

(4)浮点数在存储过程中会有精度损失,通常情况下推荐使用float64,因为其更准确

2.4字符类型

2.4.1基本介绍

  • Goalng中没有专门的字符类型,如果要存储单个字母字符,一般使用byte来保存。 
  • 字符串就是一串固定长度的字符连接起来的字符序列。Go的字符串是由单个字节连接起来的。

2.4.2使用细节

(1)字符常量是由(' ')单引号括起来的单个字符,如:'a' 

(2)我们保存的字符如果在ASCII表,可以直接使用byte保存,若保存的字符对应码大于255,我们可以使用int来保存

(3)Golang中允许使用转义字符‘\’来将其后的字符转变成特殊字符常量,如:\n表示换行符

(4)Golang中字符采用utf-8编码,即一个英文字母占1个字节,一个中文汉字占3个字节

(5)Golang中,字符的本质是一个整数,直接输出时,是该字符utf-8编码对应的码值,同时可以对整数进行格式化输出%c,会得到相应的utf-8编码的字符

(6)字符类型是可以进行运算的,相当于整数,因为它都对应有Unicode码

var a=10+'n'
fmt.Printf("%d",a)//a==120  n==110

2.4布尔类型

  • 布尔类型也叫bool类型,只有true和false两个取值
  • 布尔类型占一个字节
  • 布尔类型常用于逻辑运算

2.5string类型

2.5.1基本介绍

  • 字符串就是一串固定长度的字符连接起来的字符序列。
  • Go的字符串是由单个字节连接起来的。
  • Go语言的字符串的字节使用utf-8编码表示Unicode文本

2.5.2使用细节

(1)在Go中,字符串一旦赋值了,就不能改变了

(2)字符串的两种表示形式:

  • 双引号( " " ),会识别转义字符
  • 反引号( ` ` ),以字符串的原生形式输出,包括换行和特殊字符,可以实现防止攻击,输出源代码等效果

(3)在Go中字符串可以拼接,拼接方式为用加号(+),如 :

	var str string="hello"+" csdn"fmt.Printf("%s",str)//输出hello csdn

(4)当字符串太长时,可以将其分成多行,但+号需留在上一行,即+号不能在一行的开头

	var str string="hfeebnehr"+"hegvbfiwegifvwebgvwioebgvw"+"oegvwoegnwbeopvnwgpegvonwpegovnw"fmt.Printf("%s",str)

 2.6基本数据类型的默认值

类型默认值
整型0
浮点型0
字符串""
布尔类型false

2.7基本数据类型之间的相互转换 

2.7.1基本语法

T(v):将v转换为T类型,v为需要转换的变量,T为v转换后的的类型

例如:

	var a int=10var b float64=float64(a)fmt.Printf("b的类型为%T,值为%f",b,b)

2.7.2使用细节

(1)在Go中,数据类型的转换可以从范围小转范围大,也可以从范围大转范围小。

(2)被转换的是变量存储的数据(即值),变量本身数据类型不变

(3)在转换中,从int64转换成int8编译不会报错,不过结果会按溢出处理

var a int32=10var b int8var c int8b=int8(a)+127//编译通过,结果按溢出处理c=int8(a)+128//编译报错,栈溢出fmt.Printf("b的类型为%T,值为%d",b,b)

2.8基本数据类型和string间的转换

2.8.1基本数据类型转string

(1)使用Sprintf函数

用法:Sprintf("%参数",表达式)

说明:Sprintf根据参数生成格式化的字符串并返回该字符串

	var n=432var m=3.14var str string=fmt.Sprintf("%d",n)var str2 string=fmt.Sprintf("%f",m)fmt.Printf("str的类型为%T,值为%s\n",str,str)fmt.Printf("str2的类型为%T,值为%s",str2,str2)

 (2)使用strconv包中的函数

 

var n int=444/*func FormatInt(i int64, base int) string   i必须为int64型,所以当不是int64型时,需类型转换base 表示进制,范围为2~32*/var str string=strconv.FormatInt(int64(n),10)fmt.Printf("str的数据类型为%T,值为%s",str,str)/*func FormatFloat(f float64, fmt byte, prec, bitSize int) stringfmt表示格式prec表示精度,若fmt=='f',则prec表示数点后的位数*/var f float64=520.1314var str2 string=strconv.FormatFloat(f,'f',4,64)fmt.Printf("str2的数据类型为%T,值为%s",str2,str2)

 2.8.2 string类型转基本数据类型

方法:使用strconv包中的函数

    var str1 string="4315"var str2 string="3.14159"var n1 int64n1, _=strconv.ParseInt(str1,10,64)fmt.Printf("n1的数据类型为%T,值为%d\n",n1,n1)var n2 float64n2,_=strconv.ParseFloat(str2,64)fmt.Printf("n2的数据类型为%T,值为%f",n2,n2)

注:在string类型转向基本数据类型时,要确保string类型能够转成有效的数据。

三、标识符

3.1基本介绍

  • Go对变量,函数等命名时使用的字符序列称为标识符
  • 凡是自己可以取名字的都叫标识符

3.2标识符命名规则

(1)由26个英文字母(包括大小写),0~9,_下划线组成。

(2)标识符命名不可用数字开头

(3)标识符不能有空格,标识符严格区分字母大小写

(4)不能用系统关键字命名,如 :if for

(5)在Go中下划线_是一种特殊的标识符,称为空标识符,可以代表其他任意标识符,但示它的值会被忽略,所以仅能用其作为占位符,不能作为标识符使用

3.3标识符命名注意事项

(1)包名:保持package的名字和目录一致,尽量用简短有意义的包名,但不能和系统包名冲突

(2)变量名、常量名、函数名:采用驼峰法命名规则

(3)在Go中,变量名、常量名、函数名首字母大写能被其他包访问(即public),小写则不能被访问(即private),Golang没有public和private修饰符。

结语

感谢您的耐心阅读,希望这篇博客能够为您带来新的视角和启发。如果您觉得内容有价值,不妨动动手指,给个赞👍,让更多的朋友看到。同时,点击关注🔔,不错过我们的每一次精彩分享。若想随时回顾这些知识点,别忘了收藏⭐,让知识触手可及。您的支持是我们前进的动力,期待与您在下一次分享中相遇!

路漫漫其修远兮,吾将上下而求索。


http://www.ppmy.cn/devtools/167971.html

相关文章

某大厂自动化工程师面试题

一些大厂的自动化工程师面试题汇总: 基础知识类 请解释什么是PLC(可编程逻辑控制器)?什么是PID控制?它在自动化系统中的作用是什么?请描述一下工业4.0的基本概念。编程与控制系统类 你熟悉哪些PLC编程语言?请举例说明。如何在SCADA系统中实现数据采集和监控?请解释一下…

JVM的各种细节

(1)JVM 核心结构(必须知道) 类加载器 负责将.class()文件加载到内存中,供 JVM 使用。 方法区 存储类元数据(类名、字段、方法)、常量池、静态变量等。 JDK 8:由元空间(Metaspace)…

提升 React 应用性能:使用 React Profiler 进行性能调优

前言 在现代前端开发中,性能优化是一个不可忽视的重要环节。在 React 生态系统中,React Profiler 是一个强大的工具,它可以帮助我们检测和优化应用的性能。 本文将通过通俗易懂的语言介绍 React Profiler 的作用,并展示如何使用它…

网络爬虫【简介】

我叫补三补四,很高兴见到大家,欢迎一起学习交流和进步 今天来讲一讲爬虫 一、网络爬虫的定义 网络爬虫(Web Crawler),又称为网络蜘蛛、网络机器人等,是一种按照一定规则自动抓取互联网信息的程序或脚本。它…

深入解析淘宝商品描述接口 item_get_desc:获取商品详情的高效工具

在电商领域,商品描述是连接卖家与买家的重要桥梁。它不仅展示了商品的特性、功能和使用方法,还能直接影响消费者的购买决策。为了帮助开发者和商家更好地获取淘宝商品的详细描述信息,淘宝开放平台提供了 item_get_desc 接口。本文将详细介绍该…

CMD批处理一些冷门命令,编写windows脚本常用?

场景1: 考虑一种情况,需要使用变量对变量循环替换这个时候,如果不加以一些特殊的设置,很有可能出现与预设的结果不相符的情况,这个时候可以通过设置这样一个命令来避免这个问题。 解决方式: setlocal ena…

鸿蒙 Next 实现单例

鸿蒙 Next 实现单例 在鸿蒙 Next 开发中,单例模式是一种常用的设计模式,用于确保一个类只有一个实例,并提供一个全局访问点。本文将详细介绍如何在鸿蒙 Next 中实现单例模式,并提供几种常见的实现方式。 一、单例模式的实现方式…

自动化测试 | Python+PyCharm+Google Chrome+Selenium 环境安装记录

目录 环境版本 浏览器与驱动 Python 安装 测试 PyCharm 安装 开启软件 开始破解 Selenium 安装 测试 自动化的其实就是模拟手工点击的方式 环境版本 Python:3.11.8 PyCharm:2021.1.3 Selenium:x.x 浏览器与驱动 114.0.5735.90 …