【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类型转基本数据类型](#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整数的各个类型

类型 有无符号 占用存储空间 取值范围
int8 1byte -128~127
int16 2byte -2^15~2^15-1
int32 4byte -2^31~2^31-1
int64 8byte -2^63~2^63-1
uint8 1byte 0~255
uint16 2byte 0~2^16-1
uint32 4byte 0~2^32-1
uint64 8byte 0~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浮点类型分类

类型 占用存储空间 表示范围
float32 4byte -3.403E38~3.403E38
float64 8byte -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修饰符。

结语

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

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

相关推荐
0wioiw04 分钟前
C++基础(VScode环境安装)
开发语言·c++
hhw1991125 分钟前
c#面试题整理7
开发语言·c#
Java&Develop10 分钟前
java项目springboot 项目启动不了解决方案
java·开发语言·spring boot
qq_2573795915 分钟前
python基础-字符串速查笔记
开发语言·笔记·python
一条闲鱼_mytube20 分钟前
golang recover错误
开发语言·后端·golang
Sean_summer20 分钟前
python语言总结(持续更新)
开发语言·python
虽千万人 吾往矣20 分钟前
golang算法快慢指针
开发语言·算法·golang
怜渠客24 分钟前
【解决】golang 静态库 Undefined symbol: __mingw_vfprintf
golang·lazarus
竹等寒25 分钟前
Go红队开发—web网络编程
开发语言·前端·网络·安全·web安全·golang
Asthenia041230 分钟前
Java线程池怎么做预热?从硬编码到pool.prestartCoreThread
后端