Go語言Let's Go!

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]
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章