Go语言中的变量和常量

 更新时间:2022年07月12日 08:37:55   作者:奋斗的大橙子  
这篇文章介绍了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关键字

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

相关文章

  • Go语言里的new函数用法分析

    Go语言里的new函数用法分析

    这篇文章主要介绍了Go语言里的new函数用法,实例分析了new函数的功能及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • 浅析Golang中的协程(goroutine)

    浅析Golang中的协程(goroutine)

    在Go语言中,协程(goroutine)是轻量级的线程,它是Go语言中实现并发编程的基础,Go语言中的协程是由Go运行时调度器(scheduler)进行管理和调度的,本文将给大家简单的介绍一下Golang中的协程,需要的朋友可以参考下
    2023-05-05
  • go同步原语Phaser和Barrier区别

    go同步原语Phaser和Barrier区别

    这篇文章主要为大家介绍了通过java讲解go同步原语Phaser和Barrier区别,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • Go语言中的通道channel详情

    Go语言中的通道channel详情

    这篇文章主要介绍了Go语言中的通道channel,在Go语言中管道类似于一个数据流,每次放入或者取出一部分数据,数据取出后原通道内的数据就删除掉,在linux操作系统中管道会将函数的返回结果作为下一个函数的参数,下文详细内容需要的朋友可以参考下
    2022-02-02
  • go GCM gin中间件的加密解密文件流处理

    go GCM gin中间件的加密解密文件流处理

    这篇文章主要介绍了go语言 GCM加密解密,gin中间件的加密解密及文件流处理详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪<BR>
    2022-05-05
  • golang连接池检查连接失败时如何重试(示例代码)

    golang连接池检查连接失败时如何重试(示例代码)

    在Go中,可以通过使用database/sql包的DB类型的Ping方法来检查数据库连接的可用性,本文通过示例代码,演示了如何在连接检查失败时进行重试,感兴趣的朋友一起看看吧
    2023-10-10
  • Go语言学习笔记之反射用法详解

    Go语言学习笔记之反射用法详解

    这篇文章主要介绍了Go语言学习笔记之反射用法,详细分析了Go语言中反射的概念、使用方法与相关注意事项,需要的朋友可以参考下
    2017-05-05
  • 使用go语言将单反斜杠改为双反斜杠的方法

    使用go语言将单反斜杠改为双反斜杠的方法

    最近开发的时候遇到这么个问题,就是在window上获取了文件目录的字段,然后将这个绝对路径保存到数据库,但是前端展示的时候路径的双反斜杠变成了单反斜杠,本文给大家介绍了使用go语言将单反斜杠改为双反斜杠的方法,需要的朋友可以参考下
    2024-01-01
  • 简单聊聊Go语言的注释

    简单聊聊Go语言的注释

    这篇文章主要介绍了简单聊聊Go语言的注释的相关资料,需要的朋友可以参考下
    2023-08-08
  • 基于golang uint8、int8与byte的区别说明

    基于golang uint8、int8与byte的区别说明

    这篇文章主要介绍了基于golang uint8、int8与byte的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03

最新评论