PHP To Go 轉型手記 (二)
前言
作為一名PHP程式員,我感到榮幸。但在時代不斷的變遷中,要具備足夠的知識才可生存。
那就從Go語言學起把。不知為什麼,總感覺PHP與Go有很多相似之處。
希望看到本篇文章的你可以對Go有一個基本的認識。本系列文章與我自己學習Go語言的方式去描述。以PHP程式碼與Go程式碼的對比加以區分理解。
載入
PHP
namespace Action use Action
Go
package Action import "action"
陣列
PHP
// 初始化 $arr = [] $arr = array() // 初始化賦值 $arr = [1,2,3] // 多維陣列 $arr = [][] // 獲取值 echo $arr[1] // 獲取陣列總數 echo length($arr) // 獲取陣列區間 $a=array("red","green","blue","yellow","brown"); print_r(array_slice($a,1,2)); // 設定key=>value $arr = ["username"=>"zhangsan","age"=>13] // 刪除指定下標 unset($arr[0])
Go 陣列 & 切片 (切片是陣列的一個View,就例如SQL/">MySQL的檢視一樣)
// 初始化 var arr [5]int // 初始化賦值 arr := [5]int{1, 2, 3, 4, 5} // 無需宣告陣列個數 arr := [...]int{1, 2, 3, 4, 5, 6, 7} // 多維陣列 var arr [4][5]bool // 獲取值 fmt.Println(arr[1]) // 獲取陣列總數 fmt.Println(len(arr)) // 獲取陣列區間 顯而易見,Go對陣列的操作更便利直觀 a := [...]string{"red","green","blue","yellow","brown"} fmt.Println(a[1:2]) // 設定key=>value 這裡需要使用Map m := map[string]string{ "username": "zhangsan", "age" : "13" } // 刪除指定下標 Go沒有刪除陣列下標的系統方法 arr := arr[1:] // 刪除中間位置的下標 可通過合併的方式去除指定下標 arr := append(arr[:3],arr[4:])
迴圈結構
PHP
// 基本結構 for($i=0;$i<10;$i++){ echo $i; } // 死迴圈 for($i=0;$i<10;$i++){ echo $i; $i-- } // 獲取key,value foreach($arr as $key=>$value){ echo $key,$value }
Go
// 基本結構 for i := 0; i < 10; i++ { fmt.Println(i) } // 死迴圈 可見Go寫死迴圈非常方便 for { fmt.Println("") } // 獲取key,value for k, v := range arr { fmt.Println(k, v) }
控制結構
PHP
// if if(true){ } // switch switch(true){ case true: echo true; break; }
Go
// if if true { } // switch Go語言的Switch的Case不需要break switch true { case true: fmt.Println(true) }
類
PHP
// 宣告一個類 class City{}
Go
// 宣告一個結構體 這裡並非混淆公眾,是因為Go本身沒有類的概念,只是其宣告及操作方法與類概念相似 type City struct{}
Go語言的結構體會在下一個章節來做對比
致謝
感謝你看到這裡,希望本篇文章可以幫到你。謝謝