Go语言中的变量和常量

作者:奋斗的大橙子 时间:2024-05-09 14:52:44 

一、变量相关

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的值了?达不到交换的目的。

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

Go语言中的变量和常量

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关键字

来源:https://www.cnblogs.com/dcz2015/p/10095969.html

标签:Go,变量,常量
0
投稿

猜你喜欢

  • 浅谈django 重载str 方法

    2022-12-17 18:40:33
  • SQL Server DATEDIFF() 函数用法

    2024-01-17 16:18:16
  • Pycharm创建项目时如何自动添加头部信息

    2021-06-28 18:01:14
  • 条件CSS的使用[译]

    2009-03-12 12:23:00
  • anaconda python3.8安装后降级

    2021-09-12 05:28:51
  • Python自动化办公之Excel数据的写入

    2022-07-10 09:29:34
  • Python OpenCV 使用滑动条来调整函数参数的方法

    2022-05-20 06:43:48
  • MySql忘记密码修改方式适应5.7以上版本

    2024-01-28 08:58:43
  • Linux系统下mysqlcheck修复数据库命令(详解)

    2024-01-24 14:42:10
  • JS设计模式之单例模式(一)

    2024-05-11 09:06:29
  • ubuntu16.04制作vim和python3的开发环境

    2022-08-11 00:11:07
  • python 创建一个空dataframe 然后添加行数据的实例

    2022-05-08 01:51:59
  • Mysql 查询数据库容量大小的方法步骤

    2024-01-20 13:56:35
  • Python的Bottle框架基本知识总结

    2023-10-09 09:29:24
  • python3实现微型的web服务器

    2021-03-03 09:00:49
  • Python可视化神器pyecharts绘制柱状图

    2021-07-26 23:05:57
  • python创建线程示例

    2021-07-21 00:20:37
  • Python针对给定列表中元素进行翻转操作的方法分析

    2022-04-19 18:37:07
  • ADO的错误码对应的含义

    2007-10-22 17:31:00
  • MySQL DISTINCT 的基本实现原理详解

    2024-01-15 17:21:29
  • asp之家 网络编程 m.aspxhome.com