首页 > 其他分享 >GO中的变量、常量、字面量

GO中的变量、常量、字面量

时间:2023-10-24 15:00:44浏览次数:22  
标签:初始化 const 字面 常量 var GO iota 变量

变量类型

类型 go变量类型 fmt输出
整型 int int8 int16 int32 int64 uint uint8 uint16 uint32 uint64 %d(十进制) %b(二进制) %x(十六进制)
浮点型 float32 float64 %f(普通形式) %e(科学计数法,10的指数幂的形式) %g(e和f之间)
布尔型 bool %t
指针 uintptr(取地址用&,例如&a 取变量a的地址) %p
引用 map slice channel %v(万能的)
字节 byte (8位 1字节 1字符) %c
任意字符 rune (32位 4字节 1字符) %c %U(unicade 编码)
字符串 string %s
错误 error %v(普通),%+v(详细),%#v(最详细)

补充:%T表示类型,在打印的时候可以用来显示变量的类型

变量声明

Go语言变量必须先声明再使用,所谓使用指读取或修改。
标题声明

var name string 
var age int 
var isOk bool

批量声明

var ( 
	name string 
	age int 
	isOk bool 
)

变量初始化

如果声明后未显式初始化

  • 数值型初始化0
  • 字符串初始化为空字符串
  • 布尔型初始化为false
  • 引用类型、函数、指针、接口初始化为nil。
var a string="china"  //初始化一个变量
var a="china"  //类型不指定可以推断,推断为string
var a,b int=3,7  //初始化多个变量
var a,b="china",7  //初始化多个变量,每个变量都单独地执行类型推断     

函数内部的变量(非全局变量)可以通过:=声明并初始化。

a:=3

下划线表示匿名变量。匿名变量不占命名空间,不会分配内存,因此可以重复使用。

_=2+4

常量

常量在定义时必须赋值,且程序运行期间其值不能改变。

const PI float32=3.14

const(
    PI=3.14
    E=2.71
)

const(
    a=100
    b	//100,跟上一行的值相同
    c	//100,跟上一行的值相同
)

iota

iota是go语言的常量计数器,只能在常量的表达式中使用。

使用iota时只需要记住以下两点

  1. iota在const关键字出现时将被重置为0

  2. const中每新增一行常量声明将使iota计数一次(iota可理解为const语句块中的行索引)。

使用iota能简化定义,在定义枚举时很有用

const(
    a=iota	//0
    b		//1
    c		//2
    d		//3
)

const(
    a=iota 	//0
    b		//1
    _		//2
    d		//3
)

//跳过一个
const(
    a=iota 	//0
    b=30    
    c=iota 	//2
    d		//3
)

//忽略第一个
const(
    _=iota		// iota =0
    KB=1<<(10* iota) 	// iota =1
    MB=1<<(10* iota) 	// iota =2
    GB=1<<(10* iota) 	// iota =3
    TB=1<<(10* iota) 	// iota =4
)

//下面未显式定义的常量会复制前面的复制模式
const(
    a,b=iota+1, iota+2	//1,2  iota =0
     c,d			//2,3  iota =1
     e,f			//3,4  iota =2
)

字面量

字面量--没有出现变量名,直接出现了值。基础类型的字面量相当于是常量。

fmt.Printf("%t\n", 04 == 4.00) //用到了整型字面量和浮点型字面量
fmt.Printf("%v\n", .4i) //虚数字面量 0.4i
fmt.Printf("%t\n", '\u4f17' == '众') //Unicode和rune字面量
fmt.Printf("Hello\nWorld\n!\n") //字符串字面量

标签:初始化,const,字面,常量,var,GO,iota,变量
From: https://www.cnblogs.com/guangdelw/p/17784805.html

相关文章

  • GO中变量的作用域
    对于全局变量如果以大写字母开头,所有地方都可以访问,跨package访问时需要带上package名称;如果以小写字母开头,则本package内都可以访问。函数内部的局部变量,仅本函数内可以访问。{}可以固定一个作用域。内部声明的变量可以跟外部声明的变量有冲突,以内部的为准--就近原则。va......
  • JGoodies Usage Notes
    导包、设置导入包:<dependency><groupId>com.jgoodies</groupId><artifactId>forms</artifactId><version>1.2.1</version></dependency>idea里面布局切换一下:行列规范解释他是一个类似表格布局方式,你先设计好一个大的表格背景,然后将你想要的组件放置到指......
  • UGO+DRS评复之路
    前言针对数据库整体迁移方案,为解决异构平台数据库迁移,为减轻迁移人员的工作强度以及迁移周期。华为云GaussDB迁移UGO&DRS迁移工具应运而生。 UGO介绍数据库和应用迁移(DatabaseandApplicationMigrationUGO,简称为UGO)是一款专注于异构数据库对象迁移和应用迁移的专业化工具。通过......
  • Maven打包报错问题的解决-- No goals have been specified for this build. You must
    问题描述在使用maven执行打包操作时,出现了这样的错误:上面的图片是网上的图,我的图片忘记截图了;问题解决在我们创建的项目里面的pom.xml文件里面的dependencies标签后面,新建一个build标签,并在build标签里面放上这句代码:<defaultGoal>compile</defaultGoal>保存退出,然后重新......
  • 浅谈go反射
    基本概念支持反射的语言可以在程序编译期将变量的反射信息,如字段名称、类型信息、结构体信息等整合到可执行文件中,并给程序提供接口访问反射信息,这样就可以在程序运行期获取类型的反射信息,并且有能力修改它们。Go语言提供了reflect包来访问程序的反射信息。Refelct解析Refel......
  • Django+celery+eventlet+flower+redis异步任务创建及查询实现
    1.环境版本:Django3.2.12celery5.3.4eventlet0.33.3flower2.0.1redis3.5.3项目名称:new_project2.celery配置(settings.py)#celery#django-celery配置的部分#Broker配置,使用Redis作......
  • C++常量
    上篇文章:C++中的变量https://blog.51cto.com/u_15965130/7979028常量常量,顾名思义,是常数的量,也就是说在定义的时候初始化一个值,这个值时固定的,在以后的程序运行中不可修改。常量修饰符constC++中常量的修饰符是const关键字。即,在变量的基础上添加const关键字,表示这个量是常量,......
  • javascript: Sorting Algorithms
      /***fileSort.js*ide:vscodeJavaScriptSortingAlgorithms*插件:IntelliSense,JSDoc,CodeLens,DebuggerforChrome,静态代码检查:ESLint,JSHint,FlowLangugaeSupport,StandardJS-JavaScriptStandardStyle,koroFileHeader(文件头注释),测试插件:Mochasideba......
  • go并发的取消操作
    Go的并发模式:使用Context进行资源管理原创 lincyang lincyang新自媒体 2023-10-2310:00 发表于河北收录于合集#GO进阶16个大家好!我是[lincyang]。今天我们要一起探讨Go语言中的一个核心话题:使用Context进行资源管理。什么是Context?Context,即上下文,是Go语言中用于......
  • 在goland上部署环境用于区块链开发
    1.下载ubantu虚拟环境,使用Linux。(直接在goland中的plugin搜索下载)2.在plugin中搜索Remotedevelopmentconnector下载,用于远程开发3.在terminal中使用ubantu,下载NVM用于管理Node.js版本的工具curl-o-https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh|bas......