我是靠谱客的博主 隐形大树,最近开发中收集的这篇文章主要介绍2.5 Go 算术运算与变量使用技巧,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

 

变量作用域

简单来说,GO的变量以块为范围;一个if-else的块,就可以包含一个变量的生命周期。变量的声明,要在使用之前。

package main

import (
    "fmt"
)

func main(){
    var a int = 1
    var b int = 10  //这行代码为报错“b declared and not used”
    fmt.Println(a)  //1
    {
        var a int = 2 //块内部的变量作用域会覆盖上级变量的作用域
        fmt.Println(a) //2
    } // a为2的变量作用范围在块结束的时候,也随之结束,所以下面的a==1的结束为true
    
    if a == 1 {
        var a = 3 
        fmt.Println(a) //3
    }else{
        a = 4    //正常
        b = 11 
    }
}

注意代码报错的部分,说变量b被声明但没有使用,后面的if-else中不是有"b = 11"吗?

var b int = 10  //这行代码为报错“b declared and not used”
这就充分说明了GO的变量作用是按块分区的,并且对变量的检查不包含自己作用范围内的块。

位运算

右移,通常说右移一位相当于除以2,左移一位相当于乘以2,这只是相当;比如下面这个奇数,如果除以2则变成浮点数,就不能再直接赋值于int变量,但实际上可以;

    aa := 11111
    if aa>= 10000 {
        aa = aa>>1  //5555
    }
    fmt.Println(aa) 

所以右移就是将数字转换为二进制后,舍弃掉右移的位数,空出来的位数补0.

 

数字补0

package main

import (
    "fmt"
)

func main(){
    n1 := 1
    ss := fmt.Sprintf("%02d--%2d",n1,n1)
    fmt.Println(ss)  //01-- 1
}

 字符串补0

package main

import (
    "fmt"
)

func main(){
    s1 := "1"
    ss := fmt.Sprintf("%02v--%2v",s1,s1)
    fmt.Println(ss)  //01-- 1
    
    s1 = "A"
    ss = fmt.Sprintf("%016v--%16v",s1,s1)
    fmt.Println(ss)  //000000000000000A--               A
    s1 = "中文"
    ss = fmt.Sprintf("%08v",s1)
    fmt.Println(ss)  //000000中文
}

 

转载于:https://www.cnblogs.com/perfei/p/10632122.html

最后

以上就是隐形大树为你收集整理的2.5 Go 算术运算与变量使用技巧的全部内容,希望文章能够帮你解决2.5 Go 算术运算与变量使用技巧所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部