2.5 Go 算术运算与变量使用技巧
变量作用域
简单来说,GO的变量以块为范围;一个if-else的块,就可以包含一个变量的生命周期。变量的声明,要在使用之前。
package main import (
"fmt"
) func main(){
var a int =
var b int = //这行代码为报错“b declared and not used”
fmt.Println(a) //
{
var a int = //块内部的变量作用域会覆盖上级变量的作用域
fmt.Println(a) //
} // a为2的变量作用范围在块结束的时候,也随之结束,所以下面的a==1的结束为true if a == {
var a =
fmt.Println(a) //
}else{
a = //正常
b =
}
}
注意代码报错的部分,说变量b被声明但没有使用,后面的if-else中不是有"b = 11"吗?
var b int = 10 //这行代码为报错“b declared and not used”
这就充分说明了GO的变量作用是按块分区的,并且对变量的检查不包含自己作用范围内的块。
位运算
右移,通常说右移一位相当于除以2,左移一位相当于乘以2,这只是相当;比如下面这个奇数,如果除以2则变成浮点数,就不能再直接赋值于int变量,但实际上可以;
aa :=
if aa>= {
aa = aa>> //
}
fmt.Println(aa)
所以右移就是将数字转换为二进制后,舍弃掉右移的位数,空出来的位数补0.
数字补0
package main import (
"fmt"
) func main(){
n1 :=
ss := fmt.Sprintf("%02d--%2d",n1,n1)
fmt.Println(ss) //01-- 1
}
字符串补0
package main import (
"fmt"
) func main(){
s1 := ""
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中文
}
2.5 Go 算术运算与变量使用技巧的更多相关文章
- Linux下环境变量设置技巧
Linux下环境变量设置技巧,不用/etc/profile而是在/etc/profile.d目录下新建特定的shell文件来设置 区别: 1.两个文件都是设置环境变量文件的,/etc/profile是 ...
- 探究javascript对象和数组的异同,及函数变量缓存技巧
javascript中最经典也最受非议的一句话就是:javascript中一切皆是对象.这篇重点要提到的,就是任何jser都不陌生的Object和Array. 有段时间曾经很诧异,到底两种数据类型用来 ...
- shell变量扩展技巧
SHELL中有一些变量扩展的技巧,做下归纳总结 1.取字符串slice规则一:${变量名:位置起点}含义:由指定的位置起点开始,截取子字符串到字符串结束例如: var="/etc/passw ...
- SAP SMARTFORM 变量显示技巧
&symbol& (括号中,小写字母为变量) &symbol& 屏蔽从第一位开始的N位&symbol (n)& 只显示前N位&sym ...
- JAVA关于一些变量的技巧
如果一个变量的值不变,而且他还要被多次用到 另建一个类,把变量定义到里面 注意 private static public class JexlConfig { private ...
- Linux下环境变量设置技巧,不用/etc/profile而是在/etc/profile.d目录下新建特定的shell文件来设置
区别: 1.两个文件都是设置环境变量文件的,/etc/profile是永久性的环境变量,是全局变量,/etc/profile.d/设置所有用户生效,同样是永久变量,是全局变量. 2./etc/prof ...
- shell 变量定义技巧总结
可以多学习和模仿操作系统自带的/etc/init.d/functions函数库脚本的定义思路,多学习Linux系统脚本中的定义,有经验的读者最终应形成一套适合自己的规范和习惯. (1)变量名及变量内容 ...
- bash 变量使用技巧
- 无法启动 nexus 服务,错误1067:进程意外终止。java环境变量设置技巧。
Nexus启动失败 wrapper.log记载: 无支持版本 51.0,版本51.0指的是Java1.7. 分析: nexus版本为2.14.8,适用JRE版本为1.7. 已配置JAVA_HOME为1 ...
随机推荐
- myeclipse快捷键记忆
提示 Alt+?自动排版 Ctrl+shift+f自动添加引入包 Ctrl+shift+O切换窗口 Ctrl+F6自动添加set get方法 Alt+shift+s r 查看都是哪里调用了该方法 Ct ...
- 03 Complementing a Strand of DNA
Problem In DNA strings, symbols 'A' and 'T' are complements of each other, as are 'C' and 'G'. The r ...
- ettercap dns_spoof
首先编辑网页,打开apache2服务器,编辑好etter.dns 然后开始ettercap -G 的操作 sniff选择好自己使用的网卡 scan hosts ,扫描完将目标和网关添加到目标一目标二 ...
- C++对象在内存中的布局
(1)C++对象模型 (2)单一继承无虚函数 (3)单一继承有虚函数 (4)多重继承 (5)虚拟继承(vc++) (6)虚拟继承(g++) 参考:<深度探索C++对象模型>
- Linq基础必备
1.linq基础必备之对象初始化器和匿名类型因果分析 3. 一:对象初始化器 1.就是在new的时候给公共属性赋值的一种方式 2. 在没有初始化器之前的时候,我们是怎么初始化的呢??? 1. 构造 ...
- Oracle SQl优化总结
对数据库技术的热爱是我唯一的安慰,毕竟这是自己喜欢的事情,还可以做下去. 因为客户项目的需要,我又开始接触Oracle,大部分工作在工作流的优化和业务数据的排查上.为了更好的做这份工作,我有参考过or ...
- ES6——let 和 const
Let 1.使用 Let声明的变量,所声明的变量只在命令所在的代码块内有效. { Let a=1; var b=2; console.log(a) //在代码块里面 可以正常输出a } console ...
- NPOI CellStyle 设置
public class ExcelNPOIUnit { public static void SetCell(IWorkbook workbook, ISheet sheet, IRow row, ...
- 用Visual Studio 2015成功编译、发布UMDF驱动到目标机!!
开发工具:Visual Studio 2015企业版 主 机:windows10 X64企业版,主机是安装了Visual Studio 2015的操作系统,主要进行驱动开发和调试. 目 标 ...
- Sublime text3!行首,行尾,批量编辑!
1.Windows下的操作操作步骤 1.Ctrl + H 2.打开正则,输入^,然后Find All,查找所有的行首 3.打开正则,输入$,然后Find All,查找所有的行尾 4.光标闪动,就可以进 ...