Go语言是静态类型语言,因此变量(variable)是有明确类型的,编译器也会检查变量类型的正确性。

变量是一段或多段用来存储数据的内存,在go中,变量一旦被定义,一定要使用,不然会报错

内建变量类型:

  • bool
  • string
  • int、int8、int16、int32、int64  //有符号整数,8,16为整数长度
  • uint、uint8、uint16、uint32、uint64、uintptr(指针)  //无符号整数
  • byte  // uint8 的别名
  • rune // int32 的别名 代表一个 Unicode 码
  • float32、float64  //浮点数
  • complex64、complex128  //复数

当一个变量被声明之后,系统自动赋予它该类型的零值:int 为 0,float 为 0.0,bool 为 false,string 为空字符串,指针为 nil 等。所有的内存在 Go 中都是经过初始化的。

变量可写在函数(首个单词小写,每个新单词的首字母大写)内,在作用域内生效;也可写在函数外,作用于声明的package内。

标准格式: var 变量名 变量类型

简短格式: 变量名 := 表达式 (自动识别变量类型,只可用于函数内部)

批量格式: var ( dd = 3 ff = "avf" gg = true )

示例:

package main

import "fmt"

var aa = 1
var bb = false
var cc = "abc"
var (
dd = 3
ff = "avf"
gg = true
) func variableZeroValue() {
var a int
var s string
fmt.Printf("%d %q\n", a, s)
} func variableInitialValue() {
var a, b int = 3, 4
var s string = "abc"
fmt.Println(a, b, s)
} func variableTypeDeduction() {
var a, b, c, d = 1, 2, true, "abc"
fmt.Println(a, b, c, d)
} func variableShorter() {
a, b, c, d := 1, 2, true, "abc"
b = 5
fmt.Println(a, b, c, d)
} func main() {
fmt.Println("hello world")
variableZeroValue()
variableInitialValue()
variableTypeDeduction()
variableShorter()
fmt.Println(aa, bb, cc)
fmt.Println(dd, gg, ff)
} //输出
hello world
0 ""
3 4 abc
1 2 true abc
1 5 true abc
1 false abc
3 true avf

Go--变量的声明的更多相关文章

  1. MFC中成员变量的声明顺序与析构顺序

    第一次用博客,第一篇随笔,就写今天遇到的一个问题吧. 在VS2008的MFC对话框程序,窗口成员变量的声明顺序与其析构顺序相反,即,先声明的变量后析构,后声明的变量先析构.未在其他模式下测试. cla ...

  2. javascript中的函数式声明与变量式声明

    观察下面两段代码,试写出hello('word');的运行结果: // 变量式声明 function hello(msg){ alert(msg); var msg = function(){}; a ...

  3. 今天第一次接触到typescript,看了第一个知识点就是变量的声明,来回忆回忆,做做笔记

    以前只用过JavaScript原生写网站特效,今天还是第一次听说typescript的,然后看了一下它的基本知识,感觉很像Java,真的太像了,但是又有不同点.很让我惊奇看到的第一个知识点就和以前不同 ...

  4. Swift入门学习之一常量,变量和声明

    版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/6059421.html Swift入门学习之一常量,变量和 ...

  5. Robot Framework--07 变量的声明、赋值及其使用

    转自:http://blog.csdn.net/tulituqi/article/details/7984642 一.变量的声明 1.变量标识符 每个变量都可以用  变量标识符{变量名}    来进行 ...

  6. 【转】变量的声明和定义,从C到编译原理到C++,再到Java

    基础学了太久,时间一长有些东西就可能记得不太清楚,俗话说得好,"好记性不如烂笔头",所以把基础中的基础-变量的声明和定义,从C到编译原理到C++,再到Java用烂笔头记录下来 最早 ...

  7. shell与变量的声明的操作

    1.给命令起别名:alias 执行下面命令后,可以使用dir代替ls –l 命令,显示目录中的文件详细信息: 还可以用一个别名表示几个命令 的结合: 2.ps:显示当前登录会话的所有活动进程: 3.更 ...

  8. C++ 变量的声明与定义的区别

    变量声明和定义的区别 我们在程序设计中,时时刻刻都用到变量的定义和变量的声明,可有些时候我们对这个概念不是很清楚,知道它是怎么用,但却不知是怎么一会事,下面我就简单的把他们的区别介绍如下:(望我的指点 ...

  9. C++头文件保护符和变量的声明定义

    1.#ifndef #define #endif头文件保护符 在编译的过程中,每个.cpp文件被看成一个单独的文件来编译成单独的编译单元,#ifndef 保证类的头文件在同一个.cpp文件里被多次引用 ...

  10. C#中对于变量的声明和初始化

    C#变量初始化是C#强调安全性的另一个例子.简单地说,C#编译器需要用某个初始值对变量进行初始化,之后才能在操作中引用该变量.大多数现代编译器把没有初始化标记为警告,但C#编译器把它当作错误来看待. ...

随机推荐

  1. 🔥🔥想快速进入人工智能领域的Java程序员?你准备好了吗?

    引言 今天我们来探讨一下作为Java程序员,如何迅速融入人工智能的领域.,当前有一些流行的LLMs选择,例如ChatGPT.科大讯飞的星火.通义千问和文心一言等.如果你还没有尝试过这些工具,那么现在也 ...

  2. C语言有一分数序列: 2/1, 3 / 2,5/3,8/5,1 3/8,2 1/13... 求出这个数列得前20项之与。

    #include <stdio.h> void main() { int x, n = 20; double a = 2, b = 1, sws = 0; for (n; n >= ...

  3. .net 温故知新【13】:Asp.Net Core WebAPI 缓存

    一.缓存 缓存指在中间层中存储数据的行为,该行为可使后续数据检索更快. 从概念上讲,缓存是一种性能优化策略和设计考虑因素. 缓存可以显著提高应用性能,方法是提高不常更改(或检索成本高)的数据的就绪性. ...

  4. games101-2 透视深度插值矫正与抗锯齿分析

    透视深度插值矫正与抗锯齿分析 深度插值的差错原因 透视深度插值公式推导 games101中的错误 msaa与ssaa简要定义 games101中ssaa的实现 games101中msaa的实现 深度插 ...

  5. v-for和指令

    . v-for 起遍历作用. 注意点: 1.遍历的里面第一个值是定义的元素的值,第二个值是值的名称,第三个值为下标 2.:key是v-blind:key的简写,是代码中的唯一标识,一般用id来定义 v ...

  6. 解决opencv测试时OpenCV Error: Unspecified error (The function is not implemented.的问题

    在安装好opencv时,出现如下的报错信息: OpenCV Error: Unspecified error (The function is not implemented. Rebuild the ...

  7. 自定义线程池将异常"吃了"

    今天在做项目时,写了一个使用自定义线程池执行远程调用 // 删除购物车信息 corePoolExecutor.submit(() -> { try { cartFeignClient.delet ...

  8. 传统GIS与数字孪生结合带来的改变

    传统的地理信息系统(GIS)在地理数据的收集.存储和分析方面发挥着重要作用,而数字孪生技术则通过虚拟模型的构建与真实世界进行交互和模拟.将传统GIS与数字孪生技术相结合,不仅增强了地理数据的可视化和分 ...

  9. selenium之三种等待,强制等待、隐式等待和显式等待

    显式等待 presence_of_element_locatedpresence_of_all_elements_locatedvisibility_of_any_elements_located   ...

  10. MySQL5.7允许远程root访问

    MySQL5.7允许远程root访问 登录你的服务器MySQL mysql -u root -p MySQLroot密码 GRANT ALL PRIVILEGES ON *.* TO 'root'@' ...