首页 > 其他分享 >0x03 Go 变量

0x03 Go 变量

时间:2023-06-12 10:35:29浏览次数:33  
标签:main 变量 fmt var go num Go 0x03

变量时程序的基本组成单位,无论是使用哪个编程语言来进行开发,变量都是其程序的基本组成单位.

  1. 变量表示内存中的一个存储区域,该区域有属于自己的名称(变量名 )和类型(变量类型)

Golang 变量有三种使用方式

  1. 指定变量类型,声明后若不赋值则使用默认值

    var num int // 0
    
  2. 根据值自行判断变量类型(类型推断)

    var num = 10 // int
    
  3. 声明变量时省略 var 关键字,需要使用 := 进行声明

    num := 10
    

变量名在相同作用域中不能重复声明,否则会导致编译错误

在 Go 语言中,同类型的变量支持同时声明

var one, two, three int
fmt.Println("one =", one, "two =", two, "three =", three)
# clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [22:54:40] C:1
$ go run main.go
one = 0 two = 0 three = 0

不同类型的变量也是可以同时声明的,但是不推荐这么做

var age, name = 20, "clover"
fmt.Println("age =", age, "name =", name)
# clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [22:57:21] C:1
$ go run main.go
age = 20 name = clover

如果需要同时定义不同类型的变量,那么推荐这样

var age int, name string

在 Go 语言中,任何在方法外部定义的变量都是全局变量,定义方式和以上方式是一样的。全局变量不被使用时不会导致编译错误

package main

import "fmt"

var author = "clover"

func main() {
	fmt.Println("author =", author)
}
# clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [22:58:12] 
$ go run main.go
author = clover

还可以这样定义

package main

import "fmt"

var (
    author = "clover"
    age = 20
)

func main() {
	fmt.Println("author =", author, "age =", age)
}

注意

  1. 同一个作用域的数据值在同一类型中可以不断变化

    	var integer int = 10
    
    	integer = 20 // v
    	integer = 30 // v
    	integer = 1.1 // x
    
    	fmt.Println("integer =", integer)
    

    执行该代码后会得到一个错误,该错误表示无法将 1.1 赋值给 int 类型

    # clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [23:17:44] 
    $ go run main.go
    # command-line-arguments
    ./main.go:26:12: cannot use 1.1 (untyped float constant) as int value in assignment (truncated)
    
  2. 变量在同一作用域中不能重复定义,

    例如以下代码,这是不允许的

    func main() {
        var num = 10
        fmt.Println("num =", num)
        var num = 11
        fmt.Println("num =", num)
    }
    

    在不同作用域中可以重复定义

    func main() {
    	var num = 10
    	fmt.Println("num =", num)
    	{
    		var num = 11
    		fmt.Println("num inner scope =", num)
    	}
    }
    

    通过 go run 命令去执行是可以通过编译的

    # clover @ MacBook-Pro in ~/dev/go/learn/src/go_code/learn/variable [23:17:52] C:1
    $ go run main.go
    num = 10
    num inner scope = 11
    
  3. 变量构成的三要素:变量名 + 数据值 + 数据类型

  4. Go 语言的变量如果没有初始值,那么编译器会使用默认值,例如:数值类型的变量,默认值就是为 0 ,而 string 类型的变量默认值为空字符串

标签:main,变量,fmt,var,go,num,Go,0x03
From: https://www.cnblogs.com/CloverYou/p/17474256.html

相关文章

  • 0x04 Go 数据类型
    基本数据类型数值类型:intint8int16int32int64uintuint8uint16uint32uint64字符类型:在Go中没有类似Java中的char类型,但是可以通过byte来保存单个字母字符。int系列类型也可以保存字符varniint16='你'varaint8='a'varbbyte='b'浮点类......
  • 0x00 Hello Go
    GO程序的基本结构Go语言的文件后缀是.go结尾,例如hello.goGo项目的文件目录通常是这样的:.└──src└──go_code└──learn项目名└──package1└──package2以下代码是一个helloworld程序的代码示例/***he......
  • django views 序列化
      RESTframework中的序列化类与Django的Form和ModelForm类非常相似。我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSerializer类,它为创建处理模型实例和查询集的序列化提供了有效的快捷方式。Serializers 序列化器允许把像查询......
  • 基于Go的缓存实现
    概念缓存是计算机科学中的一个重要概念。设想某个组件需要访问外部资源,它向外部源请求资源,接收并使用资源,这些步骤都需要花费时间。当组件再次需要资源时,可以再次请求资源,但这种方式从时间上考虑是比较低效的。相反,组件可以将请求结果保存在本地某处,然后再次使用,使用本地数据总是比......
  • Golang 应用脚手架
    Nunu提供了全面的文档和示例,帮助你快速入门。它还包括一套测试套件,确保你的应用程序按预期工作。安装要求要使用Nunu,你需要在系统上安装以下软件:Golang1.16或更高版本GitMySQL5.7或更高版本(可选)Redis(可选)安装你可以通过一行命令安装Nunu:1goinstall......
  • 解决gorm安装报错
    报错:go:modulegrom.io/gorm:Get"https://proxy.golang.org/grom.io/gorm/@v/list":dialtcp142.251.43.17:443:connectex:Aconnectionattemptfailedbecausetheconnectedpartydidnotproperlyrespondafteraperiodoftime,orestablishedconn......
  • Django学习之路
    Django学习之路基于Jason的视频,收益匪浅.谢谢Jason的教诲.1、Django前戏2、Django基础3、Django路由层4、Django视图层......
  • STL-algorithm(ACM)
    unique(a.begin(),a.end())待研究与离散化有关//翻转(reverse(位置,位置))reverse(a.begin(),a.end());inta[5]={1,2,3,4,5};reverse(a,a+5);//结果54321循环移位(rotate(移动到该位置前一个地方,移动区间的头位置,移动的尾位置))第一个位置必须在第二......
  • 学习使用auto定义变量的用法
    学习使用auto定义变量的用法#include<stdio.h>intmain(){inti,num;num=2;for(i=0;i<3;i++){printf("num变量为%d\n",num);num++;{autointnum=1;printf("内置模板num变量:%d\n"......
  • Go 语言实现 MySQL 数据库事务
    Go实现MySQL数据库事务一、MySQL事务MySQL事务是指一组数据库操作,它们被视为一个逻辑单元,并且要么全部成功执行,要么全部回滚(撤销)。事务是数据库管理系统提供的一种机制,用于确保数据的一致性和完整性。事务具有以下特性(通常由ACID原则定义):原子性(Atomicity):事务中的所有操作......