package main import ( "fmt" "strings" ) // 字串處理常式,傳入字串切片和處理鏈 func StringProccess(list []string, chain []func(string) string) { // 遍歷每一個字串 for index, str := range list { // 第一個需要處理的字串 result := str // 遍歷每一個處理鏈 for _, proc := range chain { // 輸入一個字串進行處理,返回資料作為下一個處理鏈的輸入。 result = proc(result) } // 將結果放回切片 list[index] = result } } // 自定義的移除字首的處理常式 func removePrefix(str string) string { return strings.TrimPrefix(str, "go") } func main() { // 待處理的字串列表 list := []string{ "go scanner", "go parser", "go compiler", "go printer", "go formater", } // 處理常式鏈 chain := []func(string) string{ removePrefix, strings.TrimSpace, strings.ToUpper, } // 處理字串 StringProccess(list, chain) // 輸出處理好的字串 for _, str := range list { fmt.Println(str) } }
func(string)string
這種處理常式能夠接受一個字串輸入,處理後輸出。func ToLower(s string) string
字串處理常式(StringProccess)內部遍歷每一個資料來源提供的字串,每個字串都需要經過一系列鏈式處理常式處理後被重新放回切片,參見下面程式碼。// 字串處理常式, 傳入字串切片和處理鏈 func StringProccess(list []string, chain []func(string) string) { // 遍歷每一個字串 for index, str := range list { // 第一個需要處理的字串 result := str // 遍歷每一個處理鏈 for _, proc := range chain { // 輸入一個字串進行處理, 返回資料作為下一個處理鏈的輸入 result = proc(result) } // 將結果放回切片 list[index] = result } }程式碼說明如下:
// 自定義的移除字首的處理常式 func removePrefix(str string) string { return strings.TrimPrefix(str, "go") }此函數使用了 strings.TrimPrefix() 函數實現移除字串的指定字首,處理後,移除字首的字串結果將通過 removePrefix() 函數的返回值返回。
func main() { // 待處理的字串列表 list := []string{ "go scanner", "go parser", "go compiler", "go printer", "go formater", } // 處理常式鏈 chain := []func(string) string{ removePrefix, strings.TrimSpace, strings.ToUpper, } // 處理字串 StringProccess(list, chain) // 輸出處理好的字串 for _, str := range list { fmt.Println(str) } }程式碼說明如下: