golang运算与循环等
一、golang运算符
1、算术运算符
+ 相加
- 相减
* 相乘
/ 相除
% 求余
++ 自增
-- 自减
2、关系运算符
== 等于
!= 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
3、位运算符
& 按位与运算符"&"是双目运算符。 其功能是参与运算的两数各对应的二进位相与。
| 按位或运算符"|"是双目运算符。 其功能是参与运算的两数各对应的二进位相或。
^ 按位异或运算符"^"是双目运算符。 其功能是参与运算的两数各对应的二进位相异或,当两对应的二进位相异时,结果为1。
<< 左移运算符"<<"是双目运算符。左移n位就是乘以2的n次方。 其功能把"<<"左边的运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0。
>> 右移运算符">>"是双目运算符。右移n位就是除以2的n次方。 其功能是把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数。
4、逻辑运算符
&& 与
|| 或
!(感叹号) 非
5、赋值运算符
+= (C += A 等于 C = C + A)
-= (C -= A 等于 C = C - A)
*= (C *= A 等于 C = C * A)
/= (C /= A 等于 C = C / A)
%= (C %= A 等于 C = C % A)
6、运算符优先级
二、golang if判断
语法:
if 条件1 {
} else if 条件2 {
} else if 条件3 {
} else {
}
如:
func add(x int){
if x == 0 {
fmt.Println("0")
}else if x == 1 {
fmt.Println("1")
}else if x == 2 {
fmt.Println("2")
}
}
三、for循环
语法:
for i := 0; i < 10; i++ {
}
如:
func main(){
for i := 0;i < 10;i++{
fmt.Println(i)}
}
四、while语句(死循环)
#死循环(go没有while,死循环也是用for)
语法:
for true {
}或
for {
}
如:
var i int
for {
i += 1
fmt.Println(i)
}
五、range (类似python的range)(不能是数字,可以是字符串、列表、键值对等)
例子:
例子1:
x := "hello"
for i := range x{
fmt.Println(i)
}
结果:
0
1
2
3
4 例子2:
x := "hello"
for i,v := range x{
fmt.Println(i,v)
}
结果:
0 104
1 101
2 108
3 108
4 111
六、switch case
语法:
switch var {
case var1:
case var2:
case var3:
default:
}
如:
func sc(x int){
switch x {
case 1:
fmt.Println("1")
case 2,3:
fmt.Println("2")
case 5,4:
fmt.Println("3")
default:
fmt.Println("default") } } func main() {
sc(1)
sc(2)
sc(5)
sc(10)
} 结果:
1
2
3
default
#使用fallthrough强制执行后面的case代码
例子:
func sc(x int){
switch x {
case 5,4:
fmt.Println("3")
fallthrough //添加,就会执行后面一条case的结果
case 6,7:
fmt.Println("5")
case 8:
fmt.Println("7")
default:
fmt.Println("default") } } func main() {
sc(5)
}
结果:
3
5
七、label break(用于退出循环)
例如:
func main() {
x := 0
LABLE_test: //指定标签
for {
x += 1
fmt.Println(x)
if x == 3{
continue //跳过当前循环,和其它语言的continue一样
}
if x > 10{
break LABLE_test //跳出指定的标签,如果后面不接标签的话,就是退出当前循环
}
} }
结果:
1
2
4
5
6
7
8
9
10
11
八、goto语句
1、go语言的goto语句可以无条件的转移到程序中的指定行
2、goto语句通常与条件语句配合使用
3、在go程序中一般不主张使用goto语句。
goto语法
toto label
......
label:statement
goto流程图
例如:
package main
import "fmt" func main(){
var n int = 2
fmt.Println("goto")
if n > 1 {
goto label1
}
fmt.Println("s1")
fmt.Println("s2")
fmt.Println("s3")
label1:
fmt.Println("s4")
fmt.Println("s5") } ##结果
goto
s4
s5
九、golang包的导入
包的基本概念
每一个go文件都是属于一个包,go是以包的形式累管理文件和项目目录结构的。
包的作用
1、区分相同名字的函数,变量等标识符
2、当程序文件很多时,可以很好的管理项目
3、控制函数、变量的访问范围,即作用域
包的导入
1、单个包导入 import "fmt"
2、多个包导入
import (
"fmt"
"strings"
)
3、 点(.)操作
点(.)标识的包导入后,调用该包中函数时可以省略前缀包名
如:
package main
import . "fmt"
func main(){
Println("ok") //省略了前面的fmt
}
4、别名
如:
package main
import qq "fmt" //设置fmt别名为qq
func main(){
qq.Println("ok")
}
5、(_)下划线
导入该包,但不导入整个包,而是执行该包中的init函数,因此无法通过包名来调用包中的其他函数。
如:
import _ "fmt"
十、包的导出
1、查看GOPATH变量,没有就配置
[root@localhostgo_test]#go env
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go_test" //变量
GORACE=""
GOROOT="/usr/lib/golang"
GOTOOLDIR="/usr/lib/golang/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build340883937=/tmp/go-build -gno-record-gcc-switches"
CXX="g++"
CGO_ENABLED="1"
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config" ###2、创建包
[root@localhostfz]#ll
总用量 4
-rw-r--r-- 1 root root 56 3月 20 09:42 fz.go
[root@localhostfz]#pwd
/root/go_test/src/fz
[root@localhostfz]#ll
总用量 4
-rw-r--r-- 1 root root 56 3月 20 09:42 fz.go
[root@localhostfz]#cat fz.go
package fz func Add(a,b int) int { //首字母必须大写
return a + b
} ##应用
[root@localhostgo_test]#cat class7.go
package main
import (
"fmt"
"fz"
) func main(){
var x int
x = fz.Add(1,2)
fmt.Println(x) } ##测试
[root@localhostgo_test]#go run class7.go
3
golang运算与循环等的更多相关文章
- golang(一)-for 循环
golang 的循环控制中大多还是和java 很相似的 , 不过golang只有一种循环 就是for循环: for 有三个循环控制关键字 : break . continue . goto 其中 ...
- for循环的运算 改变循环的控制流 死循环 遍历数组 定义方法 有名函数匿名函数 定义函数的方法取值 与 自己创建函数取值 局部与全局变量 次幂/随机数/取绝对值/向上取整/平方根
今天学习的是for循环,对for循环的运算有了理解. document.write(" ")里的内容在网页上展示出来 有名函数非常重要!!!!!!!!!!!!!!!!!!!!!并且 ...
- 第一天:javascript实现界面运算及循环语句跳转语句
文档位置:untitled3(c:\user\dell\WebstormProjects\untitled3\testjstry0.html) 知识点1: 1.新创建html文件,编辑文档如下: &l ...
- python基础1之python介绍、安装、变量和字符编码、数据类型、输入输出、数据运算、循环
开启python之路 内容概要: 一.python介绍 二.安装 三.第一个python程序 四.变量和字符编码 五.用户输入 六.数据类型 七.一切皆对象 八.数据运算 九.if else 流程判断 ...
- [Go] golang的range循环遍历通道
range循环会无限在channels上面迭代 package main import ( "fmt" "time" ) func main() { //创建一 ...
- 410 for 循环 运算 改变循环的控制流 死循环 遍历数组 定义方法 有名函数匿名函数 定义函数的方法取值 date math 局部变量 函数 局部与全局变量 次幂/随机数/取绝对值/向上取整/平方根
for(1.表达式1;2.表达式2;3.表达式3){ 4.循环体语句; } 先执行1 ,在执行2, 表达式, 如果2结果为false,退出循环 如果2是true 执行4 在执行3 执行2 举例打印1- ...
- 10_bash_变量_条件判断及运算_sed_循环
shell编程: 编译器.解释器编程语言:机器语言.汇编语言.高级语言 静态语言:编译型语言 强类型(变量):变量在使用前,必须事先声明,甚至还需要初始化 事先转换成可执行格式 C/C++.C#.Ja ...
- python 运算/赋值/循环
python3 中只有一个InputPython2 中的raw_input与python3中的input一模一样python3中input输出字符串类型int,float=数字类型//地板除 % 取余 ...
- Golang教程:循环语句
循环语句用于重复执行一段代码. for 语句是 Go 中唯一的循环语句.Go 没有提供其他语言(如 C)中的 while 和 do while 语句. for 语句语法 for 语句的语法如下: fo ...
随机推荐
- Java开发笔记(五十一)多态的发生场景
江湖上传闻,面向对象之所以厉害,是因为它拥有封装.继承与多态三项神技,只要三板斧一出,号令天下谁敢不从.前面费了老大的劲才讲清楚封装和继承,那么多态又是怎样的神乎其神呢?下面先通过一个简单的例子来说明 ...
- JavaScript 为什么要有 Symbol 类型?
Symbols 是 ES6 引入了一个新的数据类型 ,它为 JS 带来了一些好处,尤其是对象属性时. 但是,它们能为我们做些字符串不能做的事情呢? 在深入探讨 Symbol 之前,让我们先看看一些 J ...
- phpstudy等php本地环境运行缓慢的问题解决方法
我们经常会使用些一键安装包部署本地服务器环境.比如phpstudy.但是会有不少人发现,wordpress等使用数据库的程序打开或者切换页面的速度明显低于静态站点.甚至需要好几秒.这个问题一直困扰了我 ...
- Chrome 插件——二维码生成笔记
原来用了几个生成二维码的插件,总是遇见各种问题……最后索性自己弄一个,这里顺便记录一下. Chrome 插件很开放!!!你只要拿到了crx文件,然后把文件的后缀名改为zip,就可以解压了,最后一切的一 ...
- python 的with用途(清理资源和异常处理,同时代码精简)
参考如下博客. https://www.cnblogs.com/DswCnblog/p/6126588.html #!/usr/bin/env python # with_example02.py c ...
- SpringBoot集成mybatis配置
一个有趣的现象:传统企业大都喜欢使用hibernate,互联网行业通常使用mybatis:之所以出现这个问题感觉与对应的业务有关,比方说,互联网的业务更加的复杂,更加需要进行灵活性的处理,所以myba ...
- dede 采集到数据后,发布日期变为本地日期解决方法
找到dede目录下的co_export.php 大概在170行左右 //获取时间和标题 $pubdate = $sortrank = time(); $title = $row->title; ...
- selenium-历史(一)
简介 Selenium是ThoughtWorks公司研发的一个强大的基于浏览器的开源自动化测试工具,它通常用来编写web应用的自动化测试.早期也即Selenium1.x时期主要使用Selenium R ...
- c/c++ linux 进程间通信系列6,使用消息队列(message queue)
linux 进程间通信系列6,使用消息队列(message queue) 概念:消息排队,先进先出(FIFO),消息一旦出队,就从队列里消失了. 1,创建消息队列(message queue) 2,写 ...
- 注册表修改computer name
修改windows server的机器名的时候,发现change按钮是disable的. 手动修改不了,用注册表regedit来修改. HKEY_LOCAL_MACHINE\SYSTEM\Curren ...