Go语言变量

文章目录

  • Go语言变量
    • 一、Go语言变量
    • 二、变量声明
      • 2.1、第一种声明方式
      • 2.2、第二种声明方式
      • 2.3、第三种声明方式
      • 2.4、多变量声明
      • 2.5、打印变量占用字节

一、Go语言变量

  • 变量来源于数学,是计算机语言中能存储计算结果或能表示值抽象的概念
  • 变量可以通过变量名访问
  • Go语言变量名由字母、数字、下划线组成,其中首个字符不能为数字
  • 声明变量的一般形式是使用var关键字:
var 变量名 变量类型
  • 可以一次声明多个变量:
var 变量名1, 变量名2 变量类型
  • 以下是一个实例
package mainimport "fmt"func main() {var a string = "Runoob"  // 变量 a 类型 string字符串 值为 Runoobfmt.Println(a)   // 打印 a 变量var b, c int = 1, 2   //  变量b c 类型 int 值为 b=1 c=2fmt.Println(b,c)
}
  • 以上实例输出结果如下
Runoob
1 2

二、变量声明

2.1、第一种声明方式

  • 第一种,指定变量类型,如果没有初始化值,则变量默认为系统变量值(默认值根据系统而定)
var v_name v_type
  • 零值就是变量没有做初始化时系统默认设置的值
package mainimport "fmt"func main() {// 声明一个变量并初始化值var a string = "RUNOOB"fmt.Println(a)// 没有初始化就是变量类型默认值(int类型默认值为0)var b intfmt.Println(b)// bool零值为falsevar c boolfmt.Println(c)
}
  • 以上实例执行结果为
RUNOOB
0
false
  • 数值类型(包括complex64/128)为0
  • 布尔型为false
  • 字符串为""(空字符串)
  • 以下几种类型为nil
var a *int
var a []int
var a map[string]int
var a chan int
var a func(string) int
var a error // error 是接口
  • 以下是一个实例
package mainimport "fmt"func main() {var i intvar f float64var b boolvar s string// %v是默认格式动词,用于打印变量的默认表示形式// %q用于打印带引号的字符串fmt.Printf("%v,%v,%v,%q\n",i,f,b,s)
}

2.2、第二种声明方式

  • 根据值自行判定变量类型
var v_name = value
  • 以下是一个实例
package mainimport "fmt"func main() {var a = truevar b = 888var c = 6.6var d = "真幸运"// $T可以获取变量的类型  \n进行换行fmt.Printf("%T\n",a)  fmt.Printf("%T\n",b)fmt.Printf("%T\n",c)fmt.Printf("%T\n",d)
}
  • 输出结果如下
bool
int
float64
string

2.3、第三种声明方式

  • 如果变量已经使用var声明过了,再使用:=声明变量,就会产生编译错误,格式如下
vname := value
  • 以下是一个错误示范
var intVal int
intVal := 1  // 这时候会产生编译错误,因为intVal已经声明,不需要重新声明
  • 直接使用下面的语句即可:
intval := 1  // 此不会产生编译错误,因为有声明的新变量,因为 := 是一个声明语句
  • intVal := 1就相当于
var intVal int = 1
  • 可以将var f string = "Runoob"简写为 f := "Runoob"
package mainimport "fmt"func main() {f := "Runoob"  // 相当于 var f string = "Runoob"fmt.Println(f)}
  • 输出结果如下
Runoob

2.4、多变量声明

// 类型相同的多个变量,非全局变量
var vname1, vname2, vname3 type
vname1, vname2, vname3 = v1, v2, v3var vname1, vname2, vname3 := v1, v2, v3  // 和 Python 很像,不需要显示声明类型,自动推断vname1, vname2, vname3 := v1, v2, v3  //出现在 := 左侧的变量就不应该是已经被声明过的,否则会导致编译错误// 这种因式分解关键字的写法一般用于声明全局变量
var (vname1 v_type1vname2 v_type2
)
  • 以下是一个实例
package mainimport "fmt"var x, y int
var (a intb bool
)var c, d int = 1, 2
var e, f = 123, "hello"// 这种不带声明格式的只能在函数体中出现
// g, h := 123, "hello"
func main() {g, h := 123, "hello"fmt.Println(x,y,a,b,c,d,e,f,g,h)}
  • 以上实例执行结果为
0 0 0 false 1 2 123 hello 123 hello

2.5、打印变量占用字节

package mainimport ("fmt""unsafe"
)func main() {var name string = "小美"fmt.Println(unsafe.Sizeof(name))
}
  • 以上实例执行结果为
16   // 占用16个字节

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/pingmian/90288.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/90288.shtml
英文地址,请注明出处:http://en.pswp.cn/pingmian/90288.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt WebEngine Widgets的使用

一、Qt WebEngine基本概念Qt WebEngine中主要分为三个模块:Qt WebEngine Widgets模块,主要用于创建基于C Widgets部件的Web程序;Qt WebEngine模块用来创建基于Qt Quick的Web程序;Qt WebEngine Core模块用来与Chromeium交互。网页玄…

【C++】标准模板库(STL)—— 学习算法的利器

【C】标准模板库(STL)—— 学习算法的利器学习 STL 需要注意的几点及 STL 简介一、什么是 STL?二、学习 STL 前的先修知识三、STL 常见容器特点对比四、学习 STL 的关键注意点五、STL 学习路线建议六、总结七、下一章 vector容器快速上手学习…

YOLO算法演进综述:从YOLOv1到YOLOv13的技术突破与应用实践,一文掌握YOLO家族全部算法!

引言:介绍目标检测技术背景和YOLO算法的演进意义。YOLO算法发展历程:使用阶段划分方式系统梳理各代YOLO的技术演进,包含早期奠基、效率优化、注意力机制和高阶建模四个阶段。YOLOv13的核心技术创新:详细解析HyperACE机制、FullPAD…

快速将前端得依赖打为tar包(yarn.lock版本)并且推送至nexus私有依赖仓库(笔记)

第一步创建js文件 文件名为downloadNpmPackage.jsprocess.env.NODE_TLS_REJECT_UNAUTHORIZED "0";const fs require("fs"); const path require("path"); const request require("request");// 设置依赖目录 const downUrl "…

Unity VS Unreal Engine ,“电影像游戏的时代” 新手如何抉择引擎?(结)

Unity VS Unreal Engine ,“电影像游戏的时代” 新手如何抉择引擎?(1)-CSDN博客 这是我的上一篇文章,如果你仍然困惑选择引擎的事情,我们不妨从别的方面看看 注意:我们可能使用"UE5"来表示Unreal Engine系…

EVAL长度限制突破方法

EVAL长度限制突破方法 <?php $param $_REQUEST[param]; If (strlen($param) < 17 && stripos($param, eval) false && stripos($param, assert) false) //长度小于17&#xff0c;没有eval和assert关键字 {eval($param); } //stripos — 查找字符串…

Linux部署.net Core 环境

我的环境 直接下载安装就可以了 wget https://builds.dotnet.microsoft.com/dotnet/Sdk/8.0.315/dotnet-sdk-8.0.315-linux-x64.tar.gzmkdir -p $HOME/dotnet && tar zxf dotnet-sdk-8.0.315-linux-x64.tar.gz -C $HOME/dotnet export DOTNET_ROOT$HOME/dotnet expor…

ARM-定时器-PWM通道输出

学习内容需求点亮4个灯&#xff0c;采用pwm的方式。定时器通道引脚AFLED序号T3CH0PD12AF2LED5CH1PD13AF2LED6CH2PD14AF2LED7CH3PD15AF2LED8实现LED5, LED6, LED7, LED8呼吸灯效果通用定时器多通道点亮T3定时器下的多个通道的灯。开发流程添加Timer依赖初始化PWM相关GPIO初始化P…

javaSE(List集合ArrayList实现类与LinkedList实现类)day15

目录 List集合&#xff1a; 1、ArrayList类&#xff1a; &#xff08;1&#xff09;数据结构&#xff1a; &#xff08;2&#xff09;扩容机制 &#xff08;3&#xff09;ArrayList的初始化&#xff1a; &#xff08;4&#xff09;ArrayList的添加元素方法 &#xff08;5…

解决 WSL 中无法访问 registry-1.docker.io/v2/,无法用 docker 拉取 image

文章目录无法拉取docker镜像补充迁移 WSL 位置Install Docker无法拉取docker镜像 docker run hello-world Unable to find image hello-world:latest locally docker: Error response from daemon: Get "https://registry-1.docker.io/v2/": context deadline excee…

【C++】简单学——list类

模拟实现之前需要了解的概念带头双向链表&#xff08;double-linked&#xff09;&#xff0c;允许在任何位置进行插入区别相比vector和string&#xff0c;多了这个已经没有下标[ ]了&#xff0c;因为迭代器其实才是主流&#xff08;要包头文件<list>&#xff09;方法构造…

Qt 国际化与本地化完整解决方案

在全球化的今天&#xff0c;软件支持多语言和本地化&#xff08;Internationalization & Localization&#xff0c;简称i18n & l10n&#xff09;已成为基本需求。Qt提供了一套完整的解决方案&#xff0c;帮助开发者轻松实现应用程序的国际化支持。本文将从原理到实践&a…

MNIST 手写数字识别模型分析

功能概述 这段代码实现了一个基于TensorFlow和Keras的MNIST手写数字识别模型。主要功能包括&#xff1a; 加载并预处理MNIST数据集构建一个简单的全连接神经网络模型训练模型并评估其性能使用训练好的模型进行预测保存和加载模型 代码解析 1. 导入必要的库 import matplot…

进阶系统策略

该策略主要基于价格动态分析,结合多种技术指标和数学计算来生成交易信号。其核心逻辑包括: 1. 价格极值计算:首先,策略计算给定周期(由`Var3`定义)内的最高价和最低价,分别存储在`Var12`和`Var13`中。这一步骤旨在捕捉价格的短期波动范围。 2. 相对位置计算:接着,策…

【Linux内核】Linux驱动开发

推荐书籍&#xff1a; 《Linux内核探秘&#xff1a;深入解析文件系统和设备驱动的架构与设计》 知识点 x86的IO地址空间和内存地址空间是独立的两套地址空间&#xff0c;并且使用不同的指令访问。MOV, IN, OUT。内存映射I/O可以将IO映射到内存。ARM等RISC采用统一编编址&#x…

MySQL用户管理(15)

文章目录前言一、用户用户信息创建用户修改密码删除用户二、数据库的权限MySQL中的权限给用户授权回收权限总结前言 其实与 Linux 操作系统类似&#xff0c;MySQL 中也有 超级用户 和 普通用户 之分 如果一个用户只需要访问 MySQL 中的某一个数据库&#xff0c;甚至数据库中的某…

react19相关问题和解答

目录 1. react19将ref放在了props中(不再需要 forwardRef),那么是不是可以通过ref获取子组件的全部变量了? 我的子组件的useImperativeHandle还需要定义吗? 1.1. ref 在 props 中的本质变化 1.2. 为什么不能访问全部变量? 2. In HTML,cannot be a descendant of. Thi…

Code Composer Studio:CCS 设置代码折叠

Code Composer Studio&#xff1a;设置代码折叠,可以按函数&#xff0c;if, 等把代码折叠起来。1.2.开启折叠选项3.开启后&#xff0c;如果文件已经打开&#xff0c;要关掉重新打开文件就可以开到折叠功能生效。

JMeter groovy 编译成.jar 文件

groovy 编译 一、windows 下手动安装Groovy 下载 Groovy 二进制包 前往官网&#xff1a;https://groovy.apache.org/download.html 下载 Binary release&#xff08; https://groovy.jfrog.io/ui/native/dist-release-local/groovy-zips/apache-groovy-sdk-4.0.27.zip &#xf…

使用maven-shade-plugin解决依赖版本冲突

项目里引入多个版本依赖时&#xff0c;最后只会使用其中一个&#xff0c;一般可以通过排除不使用的依赖处理&#xff0c;但是如果需要同时使用多个版本&#xff0c;可以使用maven-shade-plugin解决。以最典型的poi为例&#xff0c;poi版本兼容性很低&#xff0c;如果出现找不到…