----------------------------------------- error 使用 (异常处理)
// 语法 (普通错误) import "errors" func funName(paratemer) (result int, err error) { err = errors.New("自定义错误信息") }
----------------------------------------- panic 使用 (异常处理)
// 语法 (致命错误) panic("自定义错误信息") // 直接中断应用程序 // 比如数组越界、空指针异常都是 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 正则表达式
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" ) // 根据结构体转换 JSON type 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
有疑问加站长微信联系(非本文作者)