当前位置: 首页 > news >正文

Go基础-变量

文章目录

  • 1 Go中的变量
  • 2 声明一个变量
  • 3 声明变量并初始化
  • 4 变量推断
  • 5 声明多个变量
    • 5.1 多个变量相同类型
    • 5.2 多个变量不同类型
  • 6 简短声明
  • 7 Go语言变量不能把一种类型赋值给其他类型

1 Go中的变量

Go中变量指定了某存储单元的名称,该存储单元会存储特定类型的值,在Go中,有多种语法用于声明变量。

2 声明一个变量

语法

//关键字  变量名  变量类型
var name type

测试

package mainimport "fmt"func main() {var age int  // 定义一个int类型的变量age = 12  // 变量赋值var name string  // 定义一个string类型的变量name = "张三"  // 变量赋值fmt.Println("姓名:", name, "年龄:", age) // 姓名: 张三 年龄: 12
}

如果变量声明后没有进行初始化,Go会默认将其赋值为0

package mainimport "fmt"func main() {//var age int//age = 12//var name string//name = "张三"//fmt.Println("姓名:", name, "年龄:", age) // 姓名: 张三 年龄: 12var count intfmt.Println(count)  // 0var str stringfmt.Println(str)  // 空var avg float32fmt.Println(avg)  // 0 
}

3 声明变量并初始化

语法

//关键字 变量名  变量类型 = 初始化值
var name type = value

测试

package mainimport "fmt"func main() {// 声明变量并初始化var age int = 10fmt.Println(age)// 修改变量值age = 11fmt.Println("我长大了:", age)
}

4 变量推断

如果定义的变量有初始化值,则不用定义变量类型,Go会自动推断变量的类型

语法

// 关键字  变量名  = 初始化值
var age = 11
// 省略了age变量的类型int

测试

package mainimport "fmt"func main() {var age = 10fmt.Println("age is :", age)  // age is : 10
}

5 声明多个变量

5.1 多个变量相同类型

语法


var a,b int  // 声明变量
a = 1
b = 2

测试

package mainimport "fmt"func main() {var height, weigth intheight = 180weigth = 60fmt.Println("身高:", height, "cm", "体重:", weigth, "kg")  // 身高: 180 cm 体重: 60 kg}

5.2 多个变量不同类型

语法

var (name1 type1name2 type2
)

测试

package mainimport "fmt"func main() {var (name   stringage    intheight float32weight float32)name = "张三丰"age = 104height = 175.8weight = 69.6fmt.Println("姓名:", name, "年龄:", age, "身高:", height, "体重:", weight)// 姓名: 张三丰 年龄: 104 身高: 175.8 体重: 69.6
}

6 简短声明

Go语言支持对未初始化的变量进行简短声明。

语法

// 变量名 := 初始化值
name := initialvalue

测试

package mainimport "fmt"func main() {age := 11fmt.Println("age is :", age)  // age is : 11
}

:= 符号左边的值必须都有初始化值,否则报错

package mainimport "fmt"func main() {name, age := "张三丰" // 报错 assignment mismatch: 2 variables but 1 valuefmt.Println("name is :", name) 
}

:= 符号左边的变量个数与右边的初始化值的个数一定要相同

package mainimport "fmt"func main() {name, age := "张三丰", 11fmt.Println("name is :", name, "age is :", age) // name is : 张三丰 age is : 11
}

简短声明:=左侧必须包含一个未初始化的变量

package mainimport "fmt"func main() {var a = 10a, b := 11, 12  // 因为b是未初始化的,所以不报错fmt.Println(a, b) // 11,12
}

如果简短声明:=左侧都是初始化的,则会报错

package mainimport "fmt"func main() {var a, b = 10, 11a, b := 11, 12  // no new variables on left side of :=fmt.Println(a, b) 
}

go给出的报错信息还是很清晰的

7 Go语言变量不能把一种类型赋值给其他类型

Go是强类型语言,不能将类型a的变量赋值为类型b的值

package mainimport "fmt"func main() {a, b := 11, 12a = "kevin" // cannot use "kevin" (untyped string constant) as int value in assignmentfmt.Println(a, b)
}

相关文章:

Go基础-变量

文章目录1 Go中的变量2 声明一个变量3 声明变量并初始化4 变量推断5 声明多个变量5.1 多个变量相同类型5.2 多个变量不同类型6 简短声明7 Go语言变量不能把一种类型赋值给其他类型1 Go中的变量 Go中变量指定了某存储单元的名称,该存储单元会存储特定类型的值&#…...

【算法】三道算法题目单词拆分,填充每个节点的下一个右侧节点指针以及组合总和

算法第一道算法题:单词拆分java解答参考第二道算法题:填充每个节点的下一个右侧节点指针java 解答参考第三道算法题:组合总和java解答参考大家好,我是小冷。 今天还是继续学习算法技术知识吧 第一道算法题:单词拆分 …...

【算法】刷题路线(系统+全面)

本系列基于当前各大公司对大公司的考察情况,给大家规划一条可行的算法刷题路线,大概会规划 200 道自认为有用的题,并且争取让初学者,能够刷起来更加丝滑,而且每个阶段都会进行相对应的说明。 当然,无论是面…...

Fiddler的报文分析

目录 1.Statistics请求性能数据 2.检测器(Inspectors) 3.自定义响应(AutoResponder) 1.Statistics请求性能数据 报文分析: Request Count: 1 请求数,该session总共发的请求数 Bytes …...

Spring 中,有两个 id 相同的 bean,会报错吗

我们知道,spring容器里面的bean默认是单例的,所以id是唯一的。但是需要注意,同一类型的bean可以有不同的id,比如有id1->bean,也可以有id2->bean。 下面再来详细回答一下文章的问题。 首先,在同一个…...

Mysql数据库的时间(4)一查询数据库时间注意点

一.select根据时间段查询 1.原始的sql根据时间段查询 select * from stu where time between "1998-09-01" and "1999-09-01"; //查询从1998-09-01到1999-09-01时间段的数据 等同于select * from stu where time >"1998-09-01" and time &l…...

一起学 pixijs(2):修改图形属性

大家好,我是前端西瓜哥。 我们做动画、游戏、编辑器,需要根据用户的交互等操作,去实时地改变图形的属性,比如位置,颜色等信息。今天西瓜哥带大家来看看在 pixijs 怎么修改图形的属性。 因为 pixijs 的底层维护了图形…...

LeetCode 121. 买卖股票的最佳时机

原题链接 难度:easy\color{Green}{easy}easy 题目描述 给定一个数组 pricespricesprices ,它的第 iii 个元素 prices[i]prices[i]prices[i] 表示一支给定股票第 iii 天的价格。 你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同…...

shell脚本内调用另外一个shell脚本的几种方法

有时会在一个shell脚本(如test_call_other_shell.sh)中调用另外一个shell脚本(如parameter_usage.sh),这里总结几种可行的方法,这些方法在linux上和windows上(通过Git Bash)均适用: 1.通过source: 运行在相同的进程,在test_…...

Linux C++ 多进程下write写日志问题思考

文章目录多个进程(父子)同时通过write像日志文件中写,是否会出现数据混乱情况?需要满足以下条件: 1、通过open打开文件,子进程都是复制父进程的文件描述符去操作这个文件,不会造成文件混乱&…...

MySQL的四种事务隔离级别

目录一、事务的基本要素(ACID)1、原子性(Atomicity):2、一致性(Consistency):3、隔离性(Isolation):4、持久性(Durability&#xff09…...

方法区和元空间有什么关系?

一.什么是方法区? 方法区属于是 JVM 运行时数据区域的一块逻辑区域,是各个线程共享的内存区域。 《Java 虚拟机规范》只是规定了有方法区这么个概念和它的作用,方法区到底要如何实现那就是虚拟机自己要考虑的事情了。也就是说,在…...

2023VNCTF的两道(暂时)

from http://v2ish1yan.top/2023/02/19/%E6%AF%94%E8%B5%9Bwp/2023vnctf/ 比赛的时候在回学校的路上,所以没有打,听说质量挺高,赛后做一下 象棋王子 一个普通的js游戏,玩过关了就给flag,所以flag肯定在前端源码里 这…...

JDK版本区别

1. 泛型 ArrayList listnew ArrayList()------>ArrayList<Integer>listnew ArrayList<Integer>(); 2 自动装箱/拆箱 nt ilist.get(0).parseInt();-------->int ilist.get(0);原始类型与对应的包装类不用显式转换 3 for-each i0;i<a.length;i------------&…...

Android 基础知识4-2.8 TableLayout(表格布局)详解

一、TableLayout的概述 表格布局是以行数和列数来确定位置进行排列。就像一间教室&#xff0c;确定好行数与列数就能让同学有序入座。 注意&#xff1a;我们需要先添加<TableRow容器&#xff0c;每添加一个就会多一行&#xff0c;然后再往<TableRow容器中添加其它组件。…...

SQL代码编码原则和规范

目录1、先了解MySQL的执行过程2、数据库常见规范3、所有表必须使用Innodb存储引擎4、每个Innodb表必须有个主键5、数据库和表的字符集统一使用UTF86、查询SQL尽量不要使用select *&#xff0c;而是具体字段7、避免在where子句中使用 or 来连接条件8、尽量使用数值替代字符串类型…...

【博客627】gobgp服务无损变更:graceful restart特性

gobgp服务无损变更&#xff1a;graceful restart特性 场景 当我们的bgp网关在对外宣告bgp路由的时候&#xff0c;如果我们网关有新的特性要发布&#xff0c;那么此时如果把网关停止再启动新版本&#xff0c;此时bgp路由会有短暂撤回再播出的过程&#xff0c;会有网络抖动 期待…...

一起学 pixijs(1):常见图形的绘制

大家好&#xff0c;我是前端西瓜哥。 pixijs 是一个强大的 Web Canvas 2D 库&#xff0c;以其强大性能而著称。其底层使用了 WebGL 实现了硬件加速&#xff0c;当然如果不支持的话&#xff0c;也能回退为 Canvas。 本文使用的 pixijs 版本为 7.1.2。 Application Applicati…...

2023年PMP考试教材有哪些?(含pmp资料)

PMP考试教材是《PMBOK指南》&#xff0c;但这次的考试因为大纲的更新&#xff0c;而需要另外的敏捷书籍来备考。且官方发了通知&#xff0c;3、5月还是第六版指南&#xff0c;8月及8月之后&#xff0c;使用第七版教材。 新版考纲将专注于以下三个新领域: 人 – 强调与有效领导项…...

centos7防火墙工具firewall-cmd使用

centos7防火墙工具firewall-cmd使用防火墙概述centos7防火墙工具firewall-cmd使用介绍firewalld的基本使用服务管理工具相关指令配置firewalld-cmd防火墙概述 防火墙是可以帮助计算机在内部网络和外部网络之间构建一道相对隔绝的保护屏障&#xff0c;从而保护数据信息的一种技…...

什么是SSE 流式推送

SSE 流式推送&#xff08;Server-Sent Events&#xff0c;服务器发送事件&#xff09;&#xff0c;是一种基于 HTTP 协议、服务器主动向客户端单向推送实时数据流的 Web 技术&#xff08;HTML5 标准&#xff09;。 一、一句话理解 客户端&#xff08;浏览器&#xff09;用 Even…...

炸裂实锤!随手乱按挖出编译器「乱码隐藏保留字」编译报错直接封神

文章目录封面文案一、专栏开篇回顾二、初见疑点&#xff1a;反复刷屏的神秘乱码片段三、三层硬核现场取证&#xff0c;逐层锁死真相1. IDE标识实锤&#xff1a;专属K图标 关键字同款高亮2. 编译现场终极定罪&#xff1a;报错和普通未定义变量完全不同对比区分&#xff0c;一眼…...

Docker实验5

实验五----Docker编排与部署 本实验按 1 个 manager 节点 2 个 worker 节点 的标准流程进行。Docker Swarm 模式是 Docker Engine 内置的集群编排能力&#xff0c;不需要额外安装单独的编排器 **先把一台 Ubuntu 虚拟机装好 Docker&#xff0c;再关机&#xff0c;用 VMware …...

如何通过OpCore-Simplify在30分钟内完成黑苹果EFI自动化配置

如何通过OpCore-Simplify在30分钟内完成黑苹果EFI自动化配置 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore-Simplify是一款专注于自动化OpenC…...

Cursor Pro功能解锁技术解析与实践指南

Cursor Pro功能解锁技术解析与实践指南 【免费下载链接】cursor-free-vip [Support 0.45]&#xff08;Multi Language 多语言&#xff09;自动注册 Cursor Ai &#xff0c;自动重置机器ID &#xff0c; 免费升级使用Pro 功能: Youve reached your trial request limit. / Too m…...

终极美化指南:3步将你的foobar2000打造成专业音乐工作站

终极美化指南&#xff1a;3步将你的foobar2000打造成专业音乐工作站 【免费下载链接】foobox-cn DUI 配置 for foobar2000 项目地址: https://gitcode.com/GitHub_Trending/fo/foobox-cn 还在忍受foobar2000那单调乏味的默认界面吗&#xff1f;foobox-cn作为一款专为foo…...

第20篇:扩展卡尔曼滤波器实战精讲

本篇前置知识&#xff1a;掌握基础线性代数、了解状态空间方程、会基础Python编程、熟悉标准卡尔曼滤波原理、接触过工控闭环数据采集。 零基础小白也能跟着吃透&#xff0c;全程避开晦涩纯数学推导&#xff0c;所有知识点绑定机器人、自动驾驶、工控实测场景&#xff0c;代码直…...

「理」的征程(C++引入2——变量、运算与赋值(初步)(上))

在上一篇博文中&#xff0c;我教给大家了C的基础知识——输出&#xff0c;那么今天&#xff0c;让我们迈出踏入C殿堂的第二步——变量、运算与赋值。&#xff08;虽然说这篇文章好像只讲了变量&#xff09;&#xff08;P.S.我在学并查集的时候发现了一个非常棒的博文&#xff0…...

AWS CloudFormation Templates多区域部署:构建高可用架构终极指南

AWS CloudFormation Templates多区域部署&#xff1a;构建高可用架构终极指南 【免费下载链接】aws-cloudformation-templates awslabs/aws-cloudformation-templates: 是一个包含各种 AWS CloudFormation 模板的存储库。适合查找和学习 AWS CloudFormation 模板的示例&#xf…...

水墨江南模型实战:为短视频自动生成中式美学文案与字幕

水墨江南模型实战&#xff1a;为短视频自动生成中式美学文案与字幕 1. 引言&#xff1a;当短视频创作遇上“水墨江南” 如果你是做国风、文旅、历史类短视频的创作者&#xff0c;下面这个场景你一定不陌生&#xff1a;花了大半天时间拍摄和剪辑了一段精美的江南水乡片段&…...