近來開始學Go,留此博客以記錄學習過程,順便鞭策自己更加努力。 簡單介紹 "The Go Programming Language" Go(又稱Golang)是Google開發的一種靜態強類型、編譯型、併發型,並具有垃圾回收功能的編程語言。 我學習主要參考七米老師的博客 "李文周的博客" 以及他在B ...
近來開始學Go,留此博客以記錄學習過程,順便鞭策自己更加努力。
簡單介紹
The Go Programming Language
Go(又稱Golang)是Google開發的一種靜態強類型、編譯型、併發型,並具有垃圾回收功能的編程語言。
我學習主要參考七米老師的博客李文周的博客以及他在B站的視頻,在此也感謝一下大佬無私分享。
今天我學了什麼有趣的東西?
1.萬物起源HelloWorld
package main //一個Go項目必須有一個main包
import "fmt"
func main() {
//萬物起源Hello World
fmt.Println("Hello World!")
}
2.iota
const (
a1 = iota //a = iota == 0
b1 //b = iota == 1
c1 //c = iota == 2
)
3.string
//保留分行
s3 := ` Hello
World`
fmt.Println(s3)
/*
Hello
World
*/
4.array
//初始化按下標定義
str := [...]string{1:"java",3:"go",7:"c"}
fmt.Println(str)
//[java go c]
哦差點忘了,數組不可變!
5.slice
解決數組不可變
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)
6.if for switch
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)
}
7.指針
學過C的同學可能看到指針就會有點頭皮發麻嗎哈哈,go的指針很簡便了
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!