一、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
