Golang的变量定义及使用案例
Golang的变量定义及使用案例
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.变量的定义
package main import "fmt" func main() {
/*
什么是变量:
在程序运行过程中其值可以发生改变的量称为变量。 在golang中有三种定义变量的方式,分别为"声明变量","变量赋值",“自动推导类型”。
(1)声明变量语法格式:
var 变量名称 数据类型
(2)变量赋值语法格式:
var 变量名称 数据类型 = 值
(3)自动推导类型(根据值的类型确定变量名的类型)语法格式:
变量名 := 值
*/ //1>.声明变量
var name string
name = "Jason Yin"
fmt.Println(name)
fmt.Printf("变量name的数据类型是:%T\n", name) //2>.变量赋值
var age int =
fmt.Println(age)
fmt.Printf("变量age的数据类型是:%T\n", age) //3>.自动推导类型
blog := "https://www.cnblogs.com/yinzhengjie/"
fmt.Println(blog)
fmt.Printf("变量blog的数据类型是:%T\n", blog)
}
二.变量的多重赋值
package main import "fmt" func main() { name := "Jason Yin"
age :=
blog := "https://www.cnblogs.com/yinzhengjie/" fmt.Printf("变量name的数据类型是:%T,其对应的值是:%s\n", name, name)
fmt.Printf("变量age的数据类型是:%T,其对应的值是:%d\n", age, age)
fmt.Printf("变量blog的数据类型是:%T,其对应的值是:%s\n", blog, blog) fmt.Println("**********我是分割线**********") /*
上面的name,age,blog使用三行代码进行自动推导类型赋值,但是写起来相对来说比较复杂。 我们可以使用多重赋值的方式进行赋值,只需要一行就可以搞定,语法格式如下:
变量名称1,变量名称2,变量名称3[,...,变量名称n] := 对应变量名称1的值,对应变量名称2的值,对应变量名称3的值[,...,对应变量名称n的值]
*/
name2, age2, blog2 := "尹正杰", , "https://www.cnblogs.com/yinzhengjie2020"
fmt.Printf("变量name2的数据类型是:%T,其对应的值是:%s\n", name2, name2)
fmt.Printf("变量age2的数据类型是:%T,其对应的值是:%d\n", age2, age2)
fmt.Printf("变量blog2的数据类型是:%T,其对应的值是:%s\n", blog2, blog2) }
三.小试牛刀
练习一:
圆周率为3.,变量为4.,请计算圆的周长和面积。 练习二:
变量x的值为10,变量y的值为20,请将两个变量的值进行互换,最少写出两种思路。
package main import (
"fmt"
) func main() {
PI := 3.14
r := 4.115
fmt.Printf("变量PI的数据类型是:%T\n", PI)
fmt.Printf("变量r的数据类型是:%T\n", r)
//圆的的面积
s := PI * r * r //圆的周长
l := PI * * r /*
带小数的数据类型称为浮点数,浮点数分为单精度浮点型(float32)和双精度浮点型(float64):
单精度浮点型(float32):
小数点默认保留6位
双精度浮点型(float64)
小数点默认保留15位 关于浮点数的知识扫描,博主推荐阅读:
https://www.cnblogs.com/yinzhengjie2020/p/12247502.html
*/
fmt.Println("圆的面积:", s)
fmt.Println("圆的周长:", l) fmt.Printf("%.2f\n", l) //保留2位有效数字
fmt.Printf("%.5f\n", l) //保留5位有效数字
}
圆的面积和周长参考案例
package main import (
"fmt"
) func main() {
x :=
y := fmt.Printf("变量未发生交换之前,x的值为[%d],y的值为[%d]\n", x, y) /*
思路:
引入第三方变量temp来交换变量的值。
优点:
通俗易懂,生产环境中建议使用这种方式。
缺点:
多引入了一个变量,会占用内存。
*/
temp := x
x = y
y = temp fmt.Printf("变量发生交换之后,x的值为[%d],y的值为[%d]\n", x, y)
}
交换两个变量的值思路1
package main import (
"fmt"
) func main() {
x :=
y := fmt.Printf("变量未发生交换之前,x的值为[%d],y的值为[%d]\n", x, y) /*
思路:
使用加法("+")和减法("-")运算符来交换变量的值。
优点:
没有引入任何新的变量就完成了变量值的互换。
缺点:
当x和y的值足够大时,容易超出x和y的数值范围哟~
*/
x = x + y
y = x - y
x = x - y fmt.Printf("变量发生交换之后,x的值为[%d],y的值为[%d]\n", x, y)
}
交换两个变量的值思路2
package main import (
"fmt"
) func main() {
x :=
y := fmt.Printf("变量未发生交换之前,x的值为[%d],y的值为[%d]\n", x, y) /*
思路:
使用异或("^")运算符来交换变量的值。
优点:
没有引入任何新的变量就完成了变量值的互换,效率非常高,推荐在面试的时候使用这种写法,可以提高逼格~
缺点:
可读性较差,不易于读者理解,生产环境中不推荐使用这种方式实现。
*/
x = x ^ y
y = x ^ y
x = x ^ y fmt.Printf("变量发生交换之后,x的值为[%d],y的值为[%d]\n", x, y)
}
交换两个变量的值思路3
package main import (
"fmt"
) func main() {
x :=
y := fmt.Printf("变量未发生交换之前,x的值为[%d],y的值为[%d]\n", x, y) /*
思路:
使用多重赋值交换两个变量的值
优点:
没有引入任何新的变量和运算符就实现了变量值的互换,效率非常高,生产环境中推荐这种写法。
缺点:
暂无
*/
x, y = y, x fmt.Printf("变量发生交换之后,x的值为[%d],y的值为[%d]\n", x, y)
}
交换两个变量的值思路4(推荐使用)
Golang的变量定义及使用案例的更多相关文章
- Golang的常量定义及使用案例
Golang的常量定义及使用案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常量的定义 package main import ( "fmt" ) fu ...
- GO语言的进阶之路-Golang高级数据结构定义
GO语言的进阶之路-Golang高级数据结构定义 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 我们之前学习过Golang的基本数据类型,字符串和byte,以及rune也有所了解, ...
- Golang的进制转换实战案例
Golang的进制转换实战案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用进制概述 1>.进制概述 进制也就是进位制,是人们规定的一种进位方法.举个例子:二进制就 ...
- Golang指针基本介绍及使用案例
一.指针的相关概念说明 变量:是基本类型,变量存的就是值,也叫值类型 地址:用于引用计算机的内存地址,可理解为内存地址的标签,通俗一点讲就是一间房在小区里的门牌号.如下图① 指针:指针变量存的是一个地 ...
- Linux计划任务 定时任务 Crond 配置详解 crond计划任务调试 sh -x 详解 JAVA脚本环境变量定义
一.Crond 是什么?(概述) crontab 是一款linux系统中的定时任务软件用于实现无人值守或后台定期执行及循环执行任务的脚本程序,在企业中使用的非常广泛. 现在开始学习linux计 ...
- Golang的运算符优先级实操案例
Golang的运算符优先级实操案例 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.运算符优先级案例 运算符是用来在程序运行时执行数学或逻辑运算的,在Go语言中,一个表达式可以包 ...
- 第7.10节 Python类中的实例变量定义与使用
一. 引言 在前面章节已经引入介绍了类变量和实例变量,类体中定义的变量为类变量,默认属于类本身,实例变量是实例方法中定义的self对象的变量,对于每个实例都是独有数据,而类变量是该类所有实例共享 ...
- Atitit. 构造ast 语法树的总结attilax oao 1. Ast结构树形12. ast view (自是个160k的jar )22.1. 多条语句ast结构22.2. 变量定义 int b,c; 的ast结构22.3. 方法调用meth1(a=1,b=2,c=3); 的ast结构23. 误解的问题33.1. 语法书子能是个二叉树,实际上多叉树越好..33.2. 非要不个ast放到个s
Atitit. 构造ast 语法树的总结attilax oao 1. Ast结构树形1 2. ast view (自是个160k的jar )2 2.1. 多条语句ast结构2 2.2. 变量定义 in ...
- c++中变量声明和变量定义的区别。2016年12月6日
整个流程: 1.程序告诉cpu,程序将要使用一个变量.(暂时不一定用到,先说一下.) 2.程序告诉CPU,程序现在就要使用一个变量.(现在就用) 3.cpu按照这个变量的类型,把内存划分出几个单位(b ...
随机推荐
- STM32的程序升级
IAP基础参考http://www.eeworld.com.cn/mcu/2018/ic-news112042038.html https://blog.csdn.net/tq384998430/ar ...
- 五、linux基础-shell机制
5.1 shell机制1.Linux命令程序员可以看懂,但是操作系统是不懂这句话的含义的.因为所有的命令必须重新被解释然后传递给Linux内核才可以执行.这一被解释的机制就是shell. Linux命 ...
- Linux centosVMware 自动化运维Ansible介绍、Ansible安装、远程执行命令、拷贝文件或者目录、远程执行脚本、管理任务计划、安装rpm包/管理服务、 playbook的使用、 playbook中的循环、 playbook中的条件判断、 playbook中的handlers、playbook实战-nginx安装、管理配置文件
一.Ansible介绍 不需要安装客户端,通过sshd去通信 基于模块工作,模块可以由任何语言开发 不仅支持命令行使用模块,也支持编写yaml格式的playbook,易于编写和阅读 安装十分简单,ce ...
- 2019上海爱奇艺大数据Java实习生-面试记录
目录 一轮 电话面试 二轮 代码笔试 三轮 技术面试 总结 附:电话面试问题点解惑 补充:面试未通过 一轮 电话面试 2019.04.28 16:21 [w]:面试官,[m]:我,下面的内容来自电话录 ...
- 135、Java中的静态块,构造方法和构造块
01.代码如下: package TIANPAN; class Book { static String msg; // static属性,暂不封装 public Book() { // 构造方法 S ...
- 洛谷 P5242 [USACO19FEB]Cow Dating P
这道题很有意思. 不难发现,对于一个区间 \([l, r]\),恰好只有一个奶牛接受邀请的概率为 \[\prod_{i=l}^r(1-p_i) \cdot \sum_{i=l}^r \frac {p_ ...
- nginx 打印详细请求
log_format main escape=json '{ "@timestamp": "$time_iso8601", ' '"remote_ad ...
- 每天一点点之vue框架 watch监听变量(深度监听)
<div> <p>FullName: {{fullName}}</p> <p>FirstName: <input type="text& ...
- 大数据篇:DolphinScheduler-1.2.0.release安装部署
大数据篇:DolphinScheduler-1.2.0.release安装部署 1 配置jdk #查看命令 rpm -qa | grep java #删除命令 rpm -e --nodeps xxx ...
- JAVA 集合 List 分组的两种方法
CSDN日报20170219--<程序员的沟通之痛> [技术直播]揭开人工智能神秘的面纱 程序员1月书讯 云端应用征文大赛,秀绝招,赢无人机! JAVA 集合 List 分组的两种方法 2 ...