🚜

基础知识

This wiki is built in Notion. Here are all the tips you need to contribute.
  • 关键字个数: 25
     

    基本程序结构

    pacgage main // 包, 表明代码所在的模块(包)
    import "fmt" // 引入代码依赖
    
    func main() {
    	fmt.PrintLn("Hello World!")
    }

    应用程序入口

    1. 必须main 包: package main
    1. 必须main 方法: func main()
    1. 文件名不一定是 main.go

    退出返回值

    • Go 中 main 函数不支持任何返回值
    • 通过 os.Exit 来返回状态

    获取命令行参数

    • main 函数不支持传入参数
      • func main(arg []string)
    • 在程序中直接通过 os.Args 获取命令行参数

    编写测试程序

    1. 源码文件以 _test 结尾: xxx_test.go
    1. 测试方法名以 Test 开头: func TestXXX(t *testing.T) {}

    Printf

    /*
    		%v 输出结构体 {10 30}
    		%+v 输出结构体显示字段名 {one:10 tow:30}
    		%#v 输出结构体源代码片段 main.Point{one:10, tow:30}
    		%T 输出值的类型			 main.Point
    		%t 输出格式化布尔值		 true
    		%d`输出标准的十进制格式化 100
    		%b`输出标准的二进制格式化 99 对应 1100011
    		%c`输出定整数的对应字符  99 对应 c
    		%x`输出十六进制编码  99 对应 63
    		%f`输出十进制格式化  99 对应 63
    		%e`输出科学技科学记数法表示形式  123400000.0 对应 1.234000e+08
    		%E`输出科学技科学记数法表示形式  123400000.0 对应 1.234000e+08
    		%s 进行基本的字符串输出   "\"string\""  对应 "string"
    		%q 源代码中那样带有双引号的输出   "\"string\""  对应 "\"string\""
    		%p 输出一个指针的值   &jgt 对应 0xc00004a090
    		% 后面使用数字来控制输出宽度 默认结果使用右对齐并且通过空格来填充空白部分
    		%2.2f  指定浮点型的输出宽度 1.2 对应  1.20
    		%*2.2f  指定浮点型的输出宽度对齐,使用 `-` 标志 1.2 对应  *1.20
    	 */

    变量赋值

    • 赋值可以进行自动类型推断
    • 在一个赋值语句中可以对多个变量进行同时赋值

    常量定义

    快速设置连续值

    const (
    	Monday = iota + 1
    	Tuesday
    	Wednesday
    	Thursday
    	Friday
    	Saturday
    	Sunday
    )
    
    // 快速位赋值
    const (
    	Open = 1 << iota
    	Close
    	Pending
    )

    数据类型

    • bool
    • string
    • int int8 int16 int32 int64
    • uint uint8 uint16 uint32 uint64 uintptr
    • byte // alias for uint8
    • rune // alias for int32
    • float32 float64
    • complex64 complex128

    类型转换

    1. Go 语言不允许隐式类型转换
    1. 别名和原有类型也不能进行隐式类型转换

    指针类型

    1. 不支持指针运算
    1. string 是值类型, 默认的初始化为空字符串, 而不是 nil

    运算符

    • Go 语言没有前置的 ++, , ++a

    == 比较数组

    • 相同维数且含有相同个数元素的数组才能可以比较
    • 每个元素都相同都才相等

    位运算符

    &^ 按位置零
    1 &^ 0 = 1
    1 &^ 1 = 0

    循环

    Go 语言仅支持循环关键字 for

    逻辑判断

    if 条件

    1. condition 表达式结果必须为布尔值
    1. 支持变量赋值
    if var declaration; condition {}

    switch 条件

    1. 条件表达式不限制为常量或整数
    1. 单个 case 中, 可以出现多个结果选项, 使用逗号分隔
    1. 与 C 语言等规则相反, Go 语言不需要用 break 来明确退出一个 case
    1. 可以不设定 switch 之后等条件表达式, 在此种情况下, 整个 switch 结构与多个 if else 逻辑作用相同
    switch os := runtime.GOOS; os {
    	case "darwin":
    		fmt.Println("OS X")
    	case "linux":
    		fmt.Println("Linux")
    	default:
    		fmt.Println("default")
    }
    // 可以替代多个 if
    switch {
    	case 0 <= Num && Num <= 3:
    		fmt.Printf("0-3")
    	case 4 <= Num && Num <= 6:
    		fmt.Printf("4-6")
    	case 7 <= Num && Num <=9:
    		fmt.Printf("7-9")
    }

    数组和切片