----------------------------------------- error 使用 (異常處理)
// 文法 (普通錯誤)import "errors"func funName(paratemer) (result int, err error) { err = errors.New("自訂錯誤資訊")}
----------------------------------------- panic 使用 (異常處理)
// 文法 (致命錯誤)panic("自訂錯誤資訊") // 直接中斷應用程式// 比如數組越界、null 指標異常都是 go 內部實現的 panic 函數
----------------------------------------- recover 使用 (異常處理)
// 文法 (恢複錯誤)// recover 必須放在 defer 後面使用defer func() { // recover() if err := recover(); err != nil { // 產生了panic異常 fmt.Println(recover()) }}() // 註解:defer 方法執行完成後執行、 ()預設調用匿名函數
----------------------------------------- 字串處理
// 方法 // 基礎操作:// Contains / Join / Index / Repeat / Repalce / Split / Trim / Fields// 轉換:// Append / Format / Parse
----------------------------------------- regexp Regex
import "regexp"func main() { buf := "0.2 456 asdx 1.233 7. 8.99 aloong 6.66" reg := regexp.MustCompile(`\d+\.\d`) if reg == nil { // ... error return } result := reg.FindAllString(buf, -1) // print result result = reg.FindAdllStringSubmatch(buf, -1)}
----------------------------------------- json 的使用 (結構體轉JSON)
import ( "encoding/json" "fmt")// 根據結構體轉換 JSONtype IT struct { Company string /* // struct_tag 的使用,文法: Company string `json:"company"` // 二次編碼 Company string `json:"-"` // -代表該欄位不會輸出到螢幕 IsOK bool `json:",string"` // 轉string */ Subjects []string IsOK bool Price float64}func main() { s := IT{"it", []string{"C#", "java", "python", "go"}, false, 666.66} //buf, err := json.Marshal(s) buf, err := json.Marshal(s, "", " ") // 格式化編碼 if err != nil { // print err return } fmt.Println(string(buf))}
----------------------------------------- json 的使用 (map轉JSON)
func main() { m := make(map[string]interface{}, 1) // interface{} 萬能資料類型 m["company"] = "loongsoft" result, err := json.MarshalIndent(m, "", " ") // println(string(result))}
----------------------------------------- json 的使用 (JSON轉結構體)
func main() { var tmp IT json.Unmarshll([]byte(jsonValue), &tmp) // print tmp}
----------------------------------------- IO 操作 檔案
// Create / NewFile / Open / OpenFile// ... documents