Go 語言結構

一.Go 語言的基礎組成有如下幾個部分:

1.包聲明 2.引入包 3.函數 4.變量 5.語句 & 表達式 6.註釋golang

// 當前程序的包名
package main

// 導入其餘包
import . "fmt"

// 常量定義
const PI = 3.14

// 全局變量的聲明和賦值
var name = "gopher"

// 通常類型聲明
type newType int

// 結構的聲明
type gopher struct{}

// 接口的聲明
type golang interface{}

// 由main函數做爲程序入口點啓動
func main() {
    Println("Hello World!")
}

//前面加個點表示省略調用,那麼調用該模塊裏面的函數,能夠不用寫模塊名稱了:
import . "fmt"
func main (){
    Println("hello,world")
}

經過 const 關鍵字來進行常量的定義。
經過在函數體外部使用 var 關鍵字來進行全局變量的聲明和賦值。
經過 type 關鍵字來進行結構(struct)和接口(interface)的聲明。
經過 func 關鍵字來進行函數的聲明。
Go 語言中變量的聲明必須使用空格隔開
如:var age int;數組

2.可見性規則:

Go語言中,使用大小寫來決定該常量、變量、類型、接口、結構或函數是否能夠被外部包所調用。
函數名首字母小寫即爲 private :
func getId() {}函數

函數名首字母大寫即爲 public :
func Printf() {}ui

3.Print、Println、Printf三者的區別:

func main() {
    fmt.Print("a", "b", 1, 2, 3, "c", "d", "\n")
    fmt.Println("a", "b", 1, 2, 3, "c", "d")
    fmt.Printf("ab %d %d %d cd\n", 1, 2, 3)
    // ab1 2 3cd
    // a b 1 2 3 c d
    // ab 1 2 3 cd

    if err := percent(30, 70, 90, 160); err != nil {
        fmt.Println(err)
    }
    // 30%
    // 70%
    // 90%
    // 數值 160 超出範圍(100)
}

3.1 Println深度理解:編碼

package main  
  
import (  
    "fmt"  
    "strings"  
)  
  
func main() {  
    str := "這裏是 www\n.runoob\n.com"  
    fmt.Println("-------- 原字符串 ----------")  
    fmt.Println(str)  
    // 去除空格  
    str = strings.Replace(str, " ", "", -1)  
    // 去除換行符  
    str = strings.Replace(str, "\n", "", -1)  
    fmt.Println("-------- 去除空格與換行後 ----------")  
    fmt.Println(str)  
}
輸出結果爲:

-------- 原字符串 ----------
這裏是 www
.runoob
.com
-------- 去除空格與換行後 ----------
這裏是www.runoob.com

4.Go 標記

Go 程序能夠由多個標記組成,能夠是關鍵字,標識符,常量,字符串,符號。指針

5.Go 語言數據類型

1.布爾型:布爾型的值只能夠是常量 true 或者 false。
2.數字類型:整型 int8~6四、uint8~6四、 和 uintptr。和浮點型 float32~64,complex64~128,Go語言還支持其餘數字類型
byte相似 uint8 rune相似 int32 uint32 或 64 位 int與 uint 同樣大小 uintptr 無符號整型,用於存放一個指針。
3.字符串類型:字符串就是一串固定長度的字符鏈接起來的字符序列。Go的字符串是由單個字節鏈接起來的。
Go語言的字符串的字節使用UTF-8編碼標識Unicode文本。
4.派生類型:
(a) 指針類型(Pointer)(b) 數組類型(c) 結構化類型(struct)
(d) Channel 類型(e) 函數類型(f) 切片類型(g) 接口類型(interface)(h) Map 類型code

6.Go 語言變量

變量聲明
第一種,指定變量類型,聲明後若不賦值,使用默認值。接口

var v_name v_type
v_name = value

第二種,根據值自行斷定變量類型。字符串

var v_name = value

第三種,省略var, 注意 :=左側的變量不該該是已經聲明過的,不然會致使編譯錯誤。get

v_name := value

// 例如
var a int = 10
var b = 10
c := 10

多變量聲明

package main

var x, y int
var (  // 這種因式分解關鍵字的寫法通常用於聲明全局變量
    a int
    b bool
)

var c, d int = 1, 2
var e, f = 123, "hello"

//這種不帶聲明格式的只能在函數體中出現
//g, h := 123, "hello"

func main(){
    g, h := 123, "hello"
    println(x, y, a, b, c, d, e, f, g, h)
}
//輸出爲:0 0 0 false 1 2 123 hello 123 hello

7.GO語言常量

多個相同類型的聲明能夠簡寫爲:

const c_name1, c_name2 = value1, value2

常量還能夠用做枚舉:

const (
    Unknown = 0
    Female = 1
    Male = 2
)

iota,特殊常量,能夠認爲是一個能夠被編譯器修改的常量。
在每個const關鍵字出現時,被重置爲0,而後再下一個const出現以前,每出現一次iota,其所表明的數字會自動增長1。
iota 能夠被用做枚舉值:

func main() {
                  const (
        aa = iota
        bb = iota
        cc = iota
    )
    fmt.Println("aa=,bb=,cc=", aa, bb, cc)
    //0 1 2
    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)
    //0 1 2 ha ha 100 100 7 8
    const (
        j = 1 << iota
        k = 3 << iota
        l
        m
    )

    fmt.Println("j=", j)
    fmt.Println("k=", k)
    fmt.Println("l=", l)
    fmt.Println("m=", m)
    /*iota 表示從 0 開始自動加 1,因此 i=1<<0, j=3<<1(<< 表示左移的意思),
    即:i=1, j=6,這沒問題,關鍵在 k 和 l,從輸出結果看 k=3<<2,l=3<<3。
    簡單表述:
    i=1:左移 0 位,不變仍爲 1;
    j=3:左移 1 位,變爲二進制 110, 即 6;
    k=3:左移 2 位,變爲二進制 1100, 即 12;
    l=3:左移 3 位,變爲二進制 11000,即 24。*/
        }
相關文章
相關標籤/搜索