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;數組
Go語言中,使用大小寫來決定該常量、變量、類型、接口、結構或函數是否能夠被外部包所調用。
函數名首字母小寫即爲 private :
func getId() {}函數
函數名首字母大寫即爲 public :
func Printf() {}ui
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
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
變量聲明
第一種,指定變量類型,聲明後若不賦值,使用默認值。接口
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
多個相同類型的聲明能夠簡寫爲:
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。*/ }