Go语言中的变量和常量

一、变量相关

1.变量声明

C# : int a;

Go : var a int; 需要在前面加一个var关键字,后面定义类型

可以使用 var( a int; b string;)减少var

2.变量初始化

var a int = 10   // 正确的使用方式1

var a = 10       // 正确的使用方式2,编译器可以自动推导出v2的类型

a := 10          // 正确的使用方式3,编译器可以自动推导出v3的类型

在:=左侧的变量不应该是已经被声明过的

3.变量赋值

注意:Go语言的新特性 “Simultaneous Assignment” (平行赋值、多重赋值 ......)

a,b = b,a 可以方便的交换两个数的值,之前的其他语言可能都需要加一个temp变量

对于这个我其实是有疑问的,就是Go语言是如何实现该功能的?按照我的想法如果是go语言底层也是按照加入一个变量的方式,那么岂不是输出的a和b都是b的值了?达不到交换的目的。

大概结论就是,这个赋值操作可以看成一个原子操作。

4.匿名变量

Go可以定义匿名变量来减少不需要的代码,例如,我只关心Value,不想打印Key的时候可以用“_”代替变量。同理对于有多个返回值的方法,可以用“_”代替我不想要的返回值,这样就减少了变量的定义。

func main(){
       x:=make(map[string]int16)
       x["apple"] =100
       x["orange"] = 50
       x["pear"]=500
       for _,value := range x{
              fmt.Println(value);
       }
}

二、常量相关

1.字面常量

Go语言的字面常量是无类型的,可以被赋值给任何类型的变量。

例如 AConstNumber 可以赋值给int、float32等类型,但是赋值给string就出错了

package main
import ( "fmt")

func main(){
       const AConstNumber = -100
       var x int = AConstNumber
       var y float32 = AConstNumber
       fmt.Println("x:",x)
       fmt.Println("y:",y)
}

2.预定义常量

Go语言预定义了这些常量:true、false和iota。

iota是个什么玩意?

iota比较特殊,可以被认为是一个可被编译器修改的常量,在每一个const关键字出现时被 重置为0,然后在下一个const出现之前,每出现一次iota,其所代表的数字会自动增1。 (一个计数器?)

例如:

func main(){
       const(
              a = iota *100
              b = iota *100
              c = iota *100
       )
       const(
              d = iota *100
              e = iota *100
              f = iota *100
       )
       fmt.Println(a)  // 打印 0
       fmt.Println(b)  // 打印 100
       fmt.Println(c)  // 打印 200
       fmt.Println(d)  // 打印 0
       fmt.Println(e)  // 打印 100
       fmt.Println(f)  // 打印 200
}

所以 iota 这个东西用好了就能当枚举使用了,正好Go语言不支持enum关键字

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Golang编程中的常量与变量

    Go语言常量 常量是指该程序可能无法在其执行期间改变的固定值.这些固定值也被称为文字. 常量可以是任何像一个整型常量,一个浮点常量,字符常量或字符串文字的基本数据类型.还有枚举常量. 常量是一样,只是它们的值不能自己定义后进行修改常规变量处理. 整型常量 一个整数文字可以是十进制,八进制,或十六进制常数.前缀指定基或基数:0x或0X的十六进制,0表示八进制,并没有为十进制. 一个整数文字也可以有一个后缀为U和L的组合,分别为无符号和长整型.后缀可以是大写或小写,并且可以以任意顺序. 这里是整数常

  • Golang学习笔记(二):类型、变量、常量

    基本类型 1.基本类型列表 复制代码 代码如下: 类型        长度     说明 bool         1      true/false,默认false, 不能把非0值当做true(不用数字代表true/false) byte         1      uint8 别名 rune         4      int32别名. 代表一个unicode code point int/unit            一来所运行的平台,32bit/64bit int8/uint8  

  • Go语言中的变量和常量

    一.变量相关 1.变量声明 C# : int a; Go : var a int; 需要在前面加一个var关键字,后面定义类型 可以使用 var( a int; b string;)减少var 2.变量初始化 var a int = 10 // 正确的使用方式1 var a = 10 // 正确的使用方式2,编译器可以自动推导出v2的类型 a := 10 // 正确的使用方式3,编译器可以自动推导出v3的类型 在:=左侧的变量不应该是已经被声明过的 3.变量赋值 注意:Go语言的新特性 “Sim

  • Python中的变量与常量

    目录 一.变量.常量的区别 二.变量 1. Python中的变量不需要声明类型 2. 用"="号来给变量赋值 3. 赋值 4. 变量 5. "=" 6. Python允许同时为多个变量赋值 三.常量 四.总结 一.变量.常量的区别 变量:在程序运行过程中,值会发生变化的量. 常量:在程序运行过程中,值不会发生变化的量. 无论是变量还是常量,在创建时都会在内存中开辟一块空间,用于保存它的值. 二.变量 1. Python中的变量不需要声明类型 这是根据Python的动

  • Go语言中的变量声明和赋值

    1.变量声明和赋值语法 Go语言中的变量声明使用关键字var,例如 复制代码 代码如下: var name string //声明变量 name = "tom" //给变量赋值 这边var是定义变量的关键字,name是变量名称,string是变量类型,=是赋值符号,tom是值.上面的程序分两步,第一步声明变量,第二步给变量赋值.也可以将两步合到一起. 复制代码 代码如下: var name string = "tom" 如果在声明时同时赋值,可以省略变量类型,Go语

  • 深度解析C语言中的变量作用域、链接和存储期的含义

    在c中变量有三种性质: 1.存储期限:变量的存储期限决定了变量占用的内存空间什么时候会被释放,具有动态存储期限的变量会在所属的程序块被执行时获得内存空间,在结束时释放内存空间.具有静态存储期限的变量在程序运行的整个期间都会占用内存空间. 2.作用域:变量有块作用域也有文件作用域,结合序章第一张图可以明白块作用域是在某些程序块内起作用,文件作用域是在整个c文件之内起作用. 3.链接:链接是各个文件之间的关系,具有内部链接的变量只在本文件内起作用,具有外部链接的变量可以在不同文件内起作用.具有无链接

  • 深入理解Swift中的变量与常量

    前言 最近在学习Swift这门新语言,对于熟练掌握OC编程的iOS开发者来说其实很容易上手,但Swift的确在语法和编程习惯上改变了很多,对于从未了解OC语言而从Swift开始学习iOS开发的新手来说可能上手有一定难度,下面我将这段时间的学习成果结合在网上搜索的知识做一个简单的汇总,希望可以帮助到正在学习Swift的小伙伴们. 变量和常量的定义 Swift开发文档中是这样定义变量和常量的:常量和变量把名字和一个特定类型的值关联起来.常量的值一旦设置好便不能再被更改,然而变量可以在将来被设置为不同

  • 一篇文章学会GO语言中的变量

    目录 1.标识符 2.关键字 3.变量 3.1 Go语言中变量的声明 3.2 批量声明 3.3 变量的初始化 3.4 短变量声明 3.5匿名变量 4.常量 5.iota 总结 1.标识符 在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名,常量名,函数 .bc,_123,a1232 2.关键字 关键字是指编程语言中预先定义好的具有特殊含义的标识符,关键字和保留字都不建议用作变量名 Go语言中有25个关键字 break        default      func        

  • C语言中的四种常量详解

    目录 1.字面常量 2.const修饰的常变量 3.#define定义的标识符常量 4.枚举常量 总结 1.字面常量 字面常量正如我们从字面上简单理解的那样,是最简单的常量,下面给出例子帮助大家理解: //1.字面常量 100; //整型常量 3.14; //浮点常量 "abfdj"; //字符串型常量 'w'; //字符型常量 int a[100]; //其中的100也是常量,此处需注意,[]中的数字必须是常量,后面我们会用到这个 2.const修饰的常变量 const修饰的变量具有

  • C语言中关于指针变量的坑

    先看一个初始化带头结点单链表的例子,LNode是结点变量,LinkList是结点指针变量,等同于LNode* typedef struct LNode{ // 定义单链表节点类型 int data; struct LNode *next; }LNode,*LinkList; 例1.错误的方法:初始化带头结点的单链表 void InitList(LinkList L) { L = (LinkList)malloc(sizeof(LNode)); L->data = 3; L->next = NU

  • 带你从内存的角度看Python中的变量

    目录 1.前言 2.引用式变量 3.赋值.浅拷贝与深拷贝 4.is的用法和id()函数 5.函数传参机制 6.扩展阅读 总结 1.前言 由于笔者并未系统地学习过Python,对Python某些底层的实现细节一概不清楚,以至于在实际使用的时候会写出一些奇奇怪怪的Bug(没错,别人写代码,我写Bug),比如对象的某些属性莫名奇妙地改变.究其原因,是对Python中的变量机制存在一些误解,毕竟以前一直是用C语言居多.无奈,只能深入学习这一部分的知识,并总结成此文. 阅读本文,你可以: 了解Python

  • C语言中数据是如何存储在内存中的

    目录 前言 ‍数据类型介绍 ‍整形数据在内存中存储 ‍浮点型数据在内存存储 前言 在计算机内存中,数据的存储方式都是以0和1的形式存储,也就是二进制的形式,数据是如何向内存写入的呢?整形数据以补码的形式存储,浮点型的存储规则较多,类似于科学计数法. ‍数据类型介绍 为什么需要有这些数据类型? 数据类型解决了数据存储的问题. ‍整形数据在内存中存储 整数中有三种二进制表示形式,分别是原码.反码.补码,正整数的原码 = 反码 = 补码,通常取最高位作为符号位. 原码:直接将正负整数按照二进制形式转换

随机推荐