Go(又稱Golang)是Google開發的一種靜態強類型、編譯型、併發型,並具備垃圾回收功能的編程語言。java
我學習主要參考七米老師的博客李文周的博客以及他在B站的視頻,在此也感謝一下大佬無私分享。golang
package main //一個Go項目必須有一個main包 import "fmt" func main() { //萬物起源Hello World fmt.Println("Hello World!") }
const ( a1 = iota //a = iota == 0 b1 //b = iota == 1 c1 //c = iota == 2 )
//保留分行 s3 := ` Hello World` fmt.Println(s3) /* Hello World */
//初始化按下標定義 str := [...]string{1:"java",3:"go",7:"c"} fmt.Println(str) //[java go c]
哦差點忘了,數組不可變!編程
解決數組不可變
slice是引用數組的某一部分,改變slice會改變對應數組數組
s3 := make([]int,5,10) fmt.Printf("%v,len:%v,cap:%v",s3,len(s3),cap(s3)) //slice能跟nil(空)比較,但不能跟其餘slice比較 if s == nil {//suggest len(s) == 0 fmt.Println("s is nil") } //! not nil after init,although it is empty var s4 = []int{} //or s4 := make([]int,0) the same if s4 == nil { fmt.Println("s4 is nil") //you won't see it }
for i:=0; i<10; i++ { s = append(s, i) //向s末尾添加值i的元素,容量不足會自動擴大 fmt.Printf("%v,len:%v,cap:%v,ptr:%p\n",s,len(s),cap(s),s) } //append s1(另外一個切片) s = append(s,s1...) fmt.Println(s)
//delete index: append(s[0:index],s[index+1:]...) s8 := append(s[0:2],s[3:]...) //delete s[2] fmt.Println(s8)
//sort array var b = [...]int{8,23,12,4,5} sort.Ints(b[:]) fmt.Println(b)
go 沒有while,或者說,for expr {}就是while併發
//if if i:=0; i>1 { //選擇性定義 fmt.Println(i) } else if i>2 { fmt.Println(i) } else { fmt.Println(i) }
//switch switch str:="hello";str { //不只支持整形 case "he"+"llo": //case能夠使用表達式 fmt.Println("true") fallthrough //go每一個case自動break,使用fallthrough執行下一case default: fmt.Println("false") }
//for //1. for i:=0; i<10; i++ { fmt.Println(i) } //2.while i := 10 for i>0 { fmt.Println(i) i-- } //for range var name = []int {1, 2, 3, 4, 5} for j,k := range name { fmt.Println(j,k) }
學過C的同窗可能看到指針就會有點頭皮發麻嗎哈哈,go的指針很簡便了app
a := 10 pa := &a fmt.Printf("pa:%v,addr:%p,type:%T\n",*pa,pa,pa)
就這麼簡單的用法,*和&,沒有偏移編程語言
//還有感受不太會用到的new b := new(int) //*b = 0 fmt.Println(*b)
Go仍是挺有趣的,語法中充滿了一些對語法老前輩的不滿哈哈。
那麼今天就學到這了,人生苦短,Let's GO!學習