zoukankan      html  css  js  c++  java
  • C#/JAVA 程序员转GO/GOLANG程序员笔记大全(DAY 05)

    ----------------------------------------- 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
  • 相关阅读:
    图像处理之理解卷积
    图像卷积与滤波的一些知识点
    利用SynchronizationContext.Current在线程间同步上下文
    C#基础之 --- 消息队列例子
    c#子线程与主线程之间的通信
    映美精相机软触发
    halcon例程学习笔记(11) 一维码、二维码识别
    C#的分布式消息队列介绍
    相似、仿射、射影变换区别
    配置管理
  • 原文地址:https://www.cnblogs.com/loongsoft/p/9399614.html
Copyright © 2011-2022 走看看