zoukankan      html  css  js  c++  java
  • 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
    ", 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)
    }
    交换两个变量的值思路1
    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)
    }
    交换两个变量的值思路2
    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)
    }
    交换两个变量的值思路3
    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)
    }
    交换两个变量的值思路4(推荐使用)

     

  • 相关阅读:
    Npm 被公司墙解决方法
    使用Docker开发NodeJs APP
    如何利用Require.Js管理多页面站点文件(译)
    Swift语言指南(十)--字符串与字符
    Swift语言指南(九)--基本运算符
    Swift语言指南(八)--语言基础之元组
    Swift语言指南(七)--语言基础之布尔值和类型别名
    web 开发入门
    JDBC的操作总结
    JDBC连接数据库
  • 原文地址:https://www.cnblogs.com/yinzhengjie2020/p/12242047.html
Copyright © 2011-2022 走看看