GO学习笔记-2 程序结构

本文介绍了Go语言中包的基本概念及其使用规范,包括包名的一致性、导入路径及初始化顺序等内容。此外,还详细讲解了Go语言中的流程控制语句,如if、switch、for循环以及goto的使用方法和注意事项。

包和文件

  • 一个目录下的所有文件必须声明同一个包名
  • 目录下的目录可以使用其他的包
  • 通过目录路径导入目录,但实际使用仍旧以目录下命名的包名使用
  • 最佳实践:目录下的包名和目录名保持一致
  • 可能会有不同导入路径,但包名却相同的包,可以为包绑定别名
  _ "strconv"
  f "fmt"

包的初始化从包级别的变量开始,在依赖解析之后按照依赖的顺序进行初始化

任何文件都可以包含任意多个 init 初始化函数,当程序启动时,初始化顺序如下
- 初始化 import 的包,无论该包是否被使用
- 查找依赖关系,初始化包内全局变量和 init 函数

流程控制

if


    //花括号必须和 ifelse 一行
    if 1 == 1 {
        ...
    } else if 2 == 2 {
        ...
    } else {
        ...
    }

    //在有返回值的函数中,不允许将最终的 return 写在 if elseif 1 == 1 {
        return ...
    } else {
        return ... //这样是编译失败的,必须有最终的 return
    }
    return ...

switch

    // s 支持任何类型,在一个条件下可以执行多个语句,且默认执行break,加上 fallthrough 后,会继续执行下一句
    s := "kanggege"
    switch s {
    case "kanggege":
        fmt.Println("yes")
        fmt.Println("yes!")
        fallthrough
    case "luci":
        fmt.Println("no!")
    case "shala"
        fmt.Println("yyyyyes")
    }

    //更牛逼的是 switch 还可以没有条件,等同于一群 if else
    switch {
    case 1 > 2:
        fmt.Println("1>2")
    case 2 > 1:
        fmt.Println("2>1")

    }

for


    Loop:
    for i := 0; i<10 ; i++ {
        Loop2:
        for j :=0; j<10;j++  {
            if j == 2 {
                break Loop
            }
            if j == 3 {
                break Loop2
            }
        }
    }

    for {
        .... //等同于 while(true)
    }

goto

    //令人惊讶的是 go 竟然也支持 goto
    for i := 0; i<10 ; i++ {
        for j :=0; j<10;j++  {
            if j == 2 {
                goto Loop
                //最好小范围的使用 goto,不要随便乱跳
            }
        }
    }
    Loop:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值