摘要:
I变量packagemainimport“fmt”funcmain()的定义{/*什么是变量:var variable name Data type=value(3)自动派生类型(根据值的类型确定变量名的类型)语法格式:=value*//1>:.声明变量varnamestringname=“JasonYin”fmt.Println(name)fmt.Printf(“变量名的数据类型为:
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 ", name) //2>.变量赋值 var age int = 18 fmt.Println(age) fmt.Printf("变量age的数据类型是:%T ", age) //3>.自动推导类型 blog := "https://www.cnblogs.com/yinzhengjie/" fmt.Println(blog) fmt.Printf("变量blog的数据类型是:%T ", blog) }
二.变量的多重赋值
package main import "fmt" func main() { name := "Jason Yin" age := 18 blog := "https://www.cnblogs.com/yinzhengjie/" fmt.Printf("变量name的数据类型是:%T,其对应的值是:%s ", name, name) fmt.Printf("变量age的数据类型是:%T,其对应的值是:%d ", age, age) fmt.Printf("变量blog的数据类型是:%T,其对应的值是:%s ", blog, blog) fmt.Println("**********我是分割线**********") /* 上面的name,age,blog使用三行代码进行自动推导类型赋值,但是写起来相对来说比较复杂。 我们可以使用多重赋值的方式进行赋值,只需要一行就可以搞定,语法格式如下: 变量名称1,变量名称2,变量名称3[,...,变量名称n] := 对应变量名称1的值,对应变量名称2的值,对应变量名称3的值[,...,对应变量名称n的值] */ name2, age2, blog2 := "尹正杰", 27, "https://www.cnblogs.com/yinzhengjie2020" fmt.Printf("变量name2的数据类型是:%T,其对应的值是:%s ", name2, name2) fmt.Printf("变量age2的数据类型是:%T,其对应的值是:%d ", age2, age2) fmt.Printf("变量blog2的数据类型是:%T,其对应的值是:%s ", blog2, blog2) }
三.小试牛刀
练习一: 圆周率为3.14,变量为4.115,请计算圆的周长和面积。 练习二: 变量x的值为10,变量y的值为20,请将两个变量的值进行互换,最少写出两种思路。
package main import ( "fmt" ) func main() { PI := 3.14 r := 4.115 fmt.Printf("变量PI的数据类型是:%T ", PI) fmt.Printf("变量r的数据类型是:%T ", r) //圆的的面积 s := PI * r * r //圆的周长 l := PI * 2 * r /* 带小数的数据类型称为浮点数,浮点数分为单精度浮点型(float32)和双精度浮点型(float64): 单精度浮点型(float32): 小数点默认保留6位 双精度浮点型(float64) 小数点默认保留15位 关于浮点数的知识扫描,博主推荐阅读: https://www.cnblogs.com/yinzhengjie2020/p/12247502.html */ fmt.Println("圆的面积:", s) fmt.Println("圆的周长:", l) fmt.Printf("%.2f ", l) //保留2位有效数字 fmt.Printf("%.5f ", l) //保留5位有效数字 }
package main import ( "fmt" ) func main() { x := 10 y := 20 fmt.Printf("变量未发生交换之前,x的值为[%d],y的值为[%d] ", x, y) /* 思路: 引入第三方变量temp来交换变量的值。 优点: 通俗易懂,生产环境中建议使用这种方式。 缺点: 多引入了一个变量,会占用内存。 */ temp := x x = y y = temp fmt.Printf("变量发生交换之后,x的值为[%d],y的值为[%d] ", x, y) }
package main import ( "fmt" ) func main() { x := 10 y := 20 fmt.Printf("变量未发生交换之前,x的值为[%d],y的值为[%d] ", x, y) /* 思路: 使用加法("+")和减法("-")运算符来交换变量的值。 优点: 没有引入任何新的变量就完成了变量值的互换。 缺点: 当x和y的值足够大时,容易超出x和y的数值范围哟~ */ x = x + y y = x - y x = x - y fmt.Printf("变量发生交换之后,x的值为[%d],y的值为[%d] ", x, y) }
package main import ( "fmt" ) func main() { x := 10 y := 20 fmt.Printf("变量未发生交换之前,x的值为[%d],y的值为[%d] ", x, y) /* 思路: 使用异或("^")运算符来交换变量的值。 优点: 没有引入任何新的变量就完成了变量值的互换,效率非常高,推荐在面试的时候使用这种写法,可以提高逼格~ 缺点: 可读性较差,不易于读者理解,生产环境中不推荐使用这种方式实现。 */ x = x ^ y y = x ^ y x = x ^ y fmt.Printf("变量发生交换之后,x的值为[%d],y的值为[%d] ", x, y) }
package main import ( "fmt" ) func main() { x := 10 y := 20 fmt.Printf("变量未发生交换之前,x的值为[%d],y的值为[%d] ", x, y) /* 思路: 使用多重赋值交换两个变量的值 优点: 没有引入任何新的变量和运算符就实现了变量值的互换,效率非常高,生产环境中推荐这种写法。 缺点: 暂无 */ x, y = y, x fmt.Printf("变量发生交换之后,x的值为[%d],y的值为[%d] ", x, y) }