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

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

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

🔥 个人主页:星云爱编程

🔥 所属专栏: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班",19
	fmt.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=5
	e=7
	f="big"
)

func main(){
	name ,class,age:="jack","软工1班",19
	fmt.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=100
	fmt.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=10
	var b float64=float64(a)

	fmt.Printf("b的类型为%T,值为%f",b,b)

2.7.2使用细节

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

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

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


	var a int32=10
	var b int8
	var c int8

	b=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=432
	var m=3.14
	var 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) string
	fmt表示格式
	prec表示精度,若fmt=='f',则prec表示数点后的位数
	*/
	var f float64=520.1314
	var 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 int64
	n1, _=strconv.ParseInt(str1,10,64)
	fmt.Printf("n1的数据类型为%T,值为%d\n",n1,n1)

	var n2 float64
	n2,_=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修饰符。

结语

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

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

相关文章:

  • 上传本地项目到GitHub
  • 守护中国软件供应链安全,未名湖畔的筑梦人
  • Adobe Premiere Pro2023配置要求
  • 【Function】使用托管身份调用Function App触发器,以增强安全性
  • 深入解析 TensorFlow 兼容性问题及构建输出文件结构*
  • 操作系统八股文整理(一)
  • PyTorch 深度学习实战(11):强化学习与深度 Q 网络(DQN)
  • 【C++基础十】泛型编程(模板初阶)
  • Windows 环境图形化安装 Oracle 23ai
  • spring声明式事务原理02-调用第1层@Transactional方法-按需创建事务createTransactionIfNecessary
  • 深入解析“Off-the-Shelf”——从产品到AI模型的通用概念
  • 视觉定位项目中可以任意修改拍照点位吗?
  • ElementUI 表格中插入图片缩略图,鼠标悬停显示大图
  • 图像处理篇---图像预处理
  • 【宠粉赠书】极速探索 HarmonyOS NEXT:国产操作系统的未来之光
  • tongweb信创项目线上业务添堵问题排查
  • 《Python实战进阶》No21:数据存储:Redis 与 MongoDB 的使用场景
  • Spring面试:Spring,SpringMVC,SpringBoot
  • 软考系统架构师 — 1 考点分析
  • 基于javaweb的SpringBoot精美物流管理系统设计与实现(源码+文档+部署讲解)
  • 广州住建局官网/搜索引擎优化分析
  • 广州市网站制作服务公司/关键词搜索方法
  • 静态网页设计网站制作/宁德市属于哪个省份
  • wordpress多用户插件/关键词优化报价
  • django 网站开发教程/站优化
  • 建设网站/怎么下载有风险的软件