首页 技术 正文
技术 2022年11月19日
0 收藏 951 点赞 4,375 浏览 2752 个字

         Golang的变量定义及使用案例

                            作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.变量的定义

package mainimport "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 mainimport "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 mainimport (
"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 mainimport (
"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 mainimport (
"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 mainimport (
"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 mainimport (
"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(推荐使用)

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,077
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,552
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,400
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,176
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,812
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,894