跟python比起來~~GoLang真的是比較精簡,重複性的東西幾乎是不太會出現的!
相對python而言,個人覺得GoLang更重視如何提供一個良好的「鍋子」讓「廚師」盡情發揮自身的廚藝及創意。而python則是著重於提供各式各樣的廚具,讓每個人不需具備太多廚藝就可以享受烹飪的樂趣!
針對之前談到的SLICE,在GoLang中不像python的list提供了許多函式可供應用的函式進行操作與應用,如:刪除、查詢、轉換等等~~,這些在GoLang中似乎認為可經由程式設計人員透過自身需求,進行設計即可有效解決,就無需代勞提供相關函式庫,提供最大的彈性空間給設計人員自行思考、設計!
就這觀點而言,自己操作起來~~發現其實:就程式設計的邏輯思維能力訓練而言,GoLang似乎比Python更加適合進行邏輯思維能力的訓練與思考!(純粹個人感受~~😏)
好囉~~~接續上一篇關於slice的相關基本設定,這一篇整理一些關於slice的複製、篩選、替換、排序等相關操作練習紀錄!
好了~~~直接上程式碼🐎時間
package main
import (
"fmt"
"sort"
)
func main() {
//array設定
var a1 = [5]string{"PHP", "ASP.NET", "JAVA", "Pyhton", "GoLang"}
//slice設定方式
var s1 = []string{"ASP", "PHP", "ASP.NET", "JAVA", "Pyhton", "GoLang"}
var s2 []string
s3 := []int{10, 50, 30, 60, 40, 20}
//GoLang不像python有針對slice刪除等相關函數,而是透過slice的操作功能進行類似刪除的相關操作
fmt.Println(a1[2:4])
s4 := make([]string, 3) //創建一個有3組元素的slice
copy(s4, s1[2:5])
fmt.Println(s4)
fmt.Println(s1[:5])
s2 = append(s1[:2], s1[4:]...) //去除原slice中的"ASP.NET" "JAVA"二個元素
fmt.Println(s2)
//SLICE元素排序操作
fmt.Printf("排序前的s3:%v \n", s3)
sort.Ints(s3) //整數型slice排序方法
fmt.Printf("排序後的s3:%v \n", s3)
fmt.Printf("排序後最大值、最小值:%d、%d \n", s3[len(s3)-1], s3[0])
sort.Strings(s2) //文字型slice排序方法
fmt.Printf("string類型的slice也可以排序:%v \n", s2)
for k, v := range s2 {
fmt.Printf("slice s2的k,v分別為:%d, %s \n", k, v)
}
s2[0] = "java" //元素替換
fmt.Println(s2)
//達成s3內每個元素*2的作法
for k, v := range s3 {
s3[k] = v * 2
}
fmt.Println(s3)
//應用map函式產生類似字典檔對應表簡易操作示範
s5 := map[string]int{
s1[0]: s3[0],
s1[1]: s3[1],
s1[2]: s3[2],
s1[3]: s3[3],
}
fmt.Println(s5)
fmt.Println(s5["ASP"]) //不存在的對應值為0
fmt.Println(s5["java"])
}
執行結果截圖如下供參:
當然在實際操作及應用上,仍有相關函式可供配合進行相關操作與設計應用,這些應用就留在後續進行相關專案設計時,有機會再做整理、分享了!
好囉~~這次就先到這裡告一段落!!