linux安裝
https://golang.google.cn/dl/
linux 64位
解壓包
tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz
寫入配置文件
vi .bashrc
export PATH=$PATH:/usr/local/go/bin
激活
source .bashrc
第一橫代碼
/* 多橫註釋 */
// 單橫註釋
// 包聲明
package main
// 引入包
import "fmt"
// func main() 是程序開始執行的函數。main 函數是每一個可執行程序所必須包含的
func main() {
fmt.Println("Hello World")
}
運行
go run test.go
關鍵字
下面列舉了 Go 代碼中會使用到的 25 個關鍵字或保留字:
break default func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
除了以上介紹的這些關鍵字,Go 語言還有 36 個預定義標識符:
append bool byte cap close complex complex64 complex128 uint16
copy false float32 float64 imag int int8 int16 uint32
int32 int64 iota len make new nil panic uint64
print println real recover string true uint uint8 uintptr
聲明
聲明變量的一般形式是使用 var 關鍵字:
var identifier type
可以一次聲明多個變量:
var identifier1, identifier2 type
聲明實例
package main
import "fmt"
func main() {
var a string = "Runoob"
fmt.Println(a)
package main
import "fmt"
func main() {
var number int = 1+1
fmt.Println(number)
}
指定變量類型,如果沒有初始化,則變量默認爲零值。
第三種,省略 var, 注意 := 左側如果沒有聲明新的變量,就產生編譯錯誤,格式:
v_name := value
var intVal int
intVal :=1 // 這時候會產生編譯錯誤
intVal,intVal1 := 1,2 // 此時不會產生編譯錯誤,因爲有聲明新的變量,因爲 := 是一個聲明語句
可以將 var f string = “Runoob” 簡寫爲 f := “Runoob”:
package main
import "fmt"
func main() {
f := "Runoob" // var f string = "Runoob"
fmt.Println(f)
}
package mian
import "fmt"
func main() {
number := 1+1
fmt.Println(number)
}
以下實例演示了常量的應用:
package main
import "fmt"
func main() {
const LENGTH int = 10
const WIDTH int = 5
var area int
const a, b, c = 1, false, "str" //多重賦值
area = LENGTH * WIDTH
fmt.Printf("面積爲 : %d", area)
println()
println(a, b, c)
}
iota 用法
package main
import "fmt"
func main() {
const (
a = iota //0
b //1
c //2
d = "ha" //獨立值,iota += 1
e //"ha" iota += 1
f = 100 //iota +=1
g //100 iota +=1
h = iota //7,恢復計數
i //8
)
fmt.Println(a,b,c,d,e,f,g,h,i)
}
運算符優先級
有些運算符擁有較高的優先級,二元運算符的運算方向均是從左至右。下表列出了所有運算符以及它們的優先級,由上至下代表優先級由高到低:
5 * / % << >> & &^
4 + - | ^
3 == != < <= > >=
2 &&
1 ||
無限循環
如果循環中條件語句永遠不爲 false 則會進行無限循環,我們可以通過 for 循環語句中只設置一個條件表達式來執行無限循環:
package main
import "fmt"
func main() {
for true {
fmt.Printf("這是無限循環。\n");
}
}
取出不爲空的{“red”,"",“green”,“yellow”,"",“black”}
package main
import "fmt"
func noEmpty(data []string) []string{
out := data[:0]
for _, str := range data {
if str != "" {
out = append(out,str)
}
}
return out
}
func main() {
data := []string{"red","","green","yellow","","black"}
afterDate := noEmpty(data)
fmt.Println(afterDate)
}
copy的用法
func main() {
data := []string{"red","","green","yellow","","black"}
afterDate := noEmpty(data)
fmt.Println(afterDate)
// cory的用法
//-----------------------------
data2 := [...]int{0,1,2,3,4,5,6,7,8,9}
data3 := data2[8:]
data4 := data2[0:5]
fmt.Println(data4)
fmt.Println(data3)
copy(data4,data3)
fmt.Println("data4=",data4)
}
>>> data4= [8 9 2 3 4]