一、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++ {
}
如:

package main

import "fmt"

func main() {
	for i := 0; i < 10; i++ {
		fmt.Println(i)
	}
}

 

四、while语句(死循环)

#死循环(go没有while,死循环也是用for)
语法:
for true {
}或
for {
}

如:

package main

import "fmt"

func main() {
	var i int
	for {
		i += 1
		fmt.Println(i)
	}
}

  

五、range (类似python的range)(不能是数字,可以是字符串、列表、键值对等)

例子1:

package main

import "fmt"

func main() {
	x := "hello"
	for i := range x {
		fmt.Println(i)
	}
}

结果:

0
1
2
3
4

例子:

package main

import "fmt"

func main() {
	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:
}

如:

package main

import "fmt"

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代码

例子:

package main

import "fmt"

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(用于退出循环)

例如:

package main

import "fmt"

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
3
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变量,没有就配置

[[email protected]_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、创建包
[[email protected]]#ll
总用量 4
-rw-r--r-- 1 root root 56 3月  20 09:42 fz.go
[[email protected]]#pwd
/root/go_test/src/fz
[[email protected]]#ll
总用量 4
-rw-r--r-- 1 root root 56 3月  20 09:42 fz.go
[[email protected]]#cat fz.go
package fz

func Add(a,b int) int { //首字母必须大写
    return a + b
}

##应用
[[email protected]_test]#cat class7.go
package main
import (
    "fmt"
    "fz"
)

func main(){
    var x int
    x = fz.Add(1,2)
    fmt.Println(x)

}

##测试
[[email protected]_test]#go run  class7.go
3