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 {
}
如:
1 2 3 4 5 6 7 8 9 | 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++ {
}
如:
1 2 3 4 | func main(){ for i := 0;i < 10;i++{ fmt.Println(i)} } |
四、while语句(死循环)
#死循环(go没有while,死循环也是用for)
语法:
for true {
}或
for {
}
如:
1 2 3 4 5 | var i int for { i += 1 fmt.Println(i) } |
五、range (类似python的range)(不能是数字,可以是字符串、列表、键值对等)
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | 例子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:
}
如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | 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代码
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 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(用于退出循环)
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <br><br><br> 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流程图
例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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变量,没有就配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | [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 |
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步