美文网首页
04. Go极简教程 初始化顺序\命名规范

04. Go极简教程 初始化顺序\命名规范

作者: 超级大柱子 | 来源:发表于2018-06-03 19:26 被阅读37次

    初始化顺序

    先执行import包的每个文件的变量, 然后是init方法, 最后执行main函数, 当main函数执行结束程序退出

    一图胜千言

    函数\变量\结构体 命名

    某个名称在包外是否可见,取决于其首个字符是否为大写字母

    Go中约定使用驼峰记法 MixedCaps 或 mixedCaps。

    由于结构体在大多数地方会被引用, 所以通常是大写开头

    接口名

    按照约定,只包含一个方法的接口应当以该方法的 名称加上-er后缀 或类似的修饰来构造一个施动着名词,如 Reader、Writer、 Formatter、CloseNotifier 等.

    请不要使用I开头作为接口命名 如IRead, IWrite

    重新声明与再次赋值

    f, err := os.Open(name)
    

    该语句声明了两个变量 f 和 err。在几行之后,又通过

    d, err := f.Stat()
    

    注意,尽管两个语句中都出现了 err,但这种重复仍然是合法的:err 在第一条语句中被声明,但在第二条语句中只是被再次赋值罢了

    在满足下列条件时,已被声明的变量 v 可出现在:= 声明中:

    • 本次声明与已声明的 v 处于同一作用域中(若 v 已在外层作用域中声明过,则此次声明会创建一个新的变量§),
    • 在初始化中与其类型相应的值才能赋予 v, 且 在此次声明中至少另有一个变量是新声明的

    空白符

    若你只需要该遍历中的第二个项(值),请使用空白标识符,即下划线来丢弃第一个值:

    for _, value := range array {
        sum += value
    }
    

    类型选择

    使用t.(type)进行类型判断

    var t interface{}
    t = functionOfSomeType()
    switch t := t.(type) {
    default:
        fmt.Printf("unexpected type %T\n", t)     // %T 输出 t 是什么类型
    case bool:
        fmt.Printf("boolean %t\n", t)             // t 是 bool 类型
    case int:
        fmt.Printf("integer %d\n", t)             // t 是 int 类型
    case *bool:
        fmt.Printf("pointer to boolean %t\n", *t) // t 是 *bool 类型
    case *int:
        fmt.Printf("pointer to integer %d\n", *t) // t 是 *int 类型
    }
    

    make 分配

    下面的例子阐明了 new 和 make 之间的区别

    var p *[]int = new([]int)       // 分配切片结构;*p == nil;基本没用
    var v  []int = make([]int, 100) // 切片 v 现在引用了一个具有 100 个 int 元素的新数组
    
    // 没必要的复杂:
    var p *[]int = new([]int)
    *p = make([]int, 100, 100)
    
    // 习惯用法:
    v := make([]int, 100)
    
    

    请记住,make 只适用于映射、切片和信道且不返回指针。若要获得明确的指针, 请使用 new 分配内存。

    打印

    fmt.Printf("Hello %d\n", 23)
    fmt.Fprint(os.Stdout, "Hello ", 23, "\n")
    fmt.Println("Hello", 23)
    fmt.Println(fmt.Sprint("Hello ", 23))
    

    fmt.Sprintf,字符串函数(Sprintf 等)会返回一个字符串

    空白符导入

    当一个程序未被直接使用时,可以作为空白符导入

    参考资料:
    http://go-tour-zh.appspot.com/

    Go极简教程 继续阅读( 目录)

    相关文章

      网友评论

          本文标题:04. Go极简教程 初始化顺序\命名规范

          本文链接:https://www.haomeiwen.com/subject/abfssftx.html