Go 基础讲解笔记

这是自己学习GO语言基础语法及应用时,的一些笔记与心得,觉得是基础中需要注意,并且熟悉的内容。

Go 基础讲解笔记_第1张图片

Go程序的一般结构:

  1. Go程序是通过 package 来组织的(与Python类似)
  2. 只有 package 名为 main 的包可以包含 main 函数
  3. 一个程序 有且仅有 一个main包

部分关键字意义:

  • package 声明包 (必须在非注释的第一行)
  • import 导入其他包(在要导入的包前面加 _"package"代表只引用不导入)
  • const 声明常量
  • var 声明变量,全局变量必须使用
  • type 声明一般变量,结构,接口
  • struct 表示结构
  • interface 表示接口
  • func 声明函数

可见性规则:

Go语言中无Java的范围关键词(public、private…..)
所以Go语言中,使用 大小写 来决定 常量、变量、函数、接口….是否能被外部包调用

根据约定 :

  1. 函数名 小写 即为 private 不能被其他包调用 如:func my(){}
  2. 函数名 大写 即为 public 可以被其他包调用 如: func My(){}

Go基本类型

  • 布尔型:bool 1字节 只能是 true 与 false
  • 整形 :int/uint 长度根据操作系统 32/64 uint(无负号)
  • 8位整形:int8/uint8 1字节 -128~127/0~255
  • 字节型:byte = uint8别名
  • 16位整形 32整形 64位整形
  • 浮点型:float32/float64 4/6字节 精确小数点后7/15
  • 复数:complex64/128
  • 保存指针的整数型:uintptr
  • 其他:array、string、struct
  • 引用:map、slice、chan

注意:

  • 声明变量时 _ 表示移除该变量,用于在函数多返回值有值不需要使用的时候。
  • Go类型转换时,不存在隐式转换,所有类型转换必须显示声明
  • 类型转换只能发生在两种相互兼容的类型之间 如:float = int (a)

指针

  1. GO中保留了指针,直接采用“.”来操作目标对象成员
  2. “&”取得变量地址
  3. “*”获取变量内容
  4. 默认值为nil

递增与递减
在GO中,++与–是语句而不是表达式,只能放到变量左边,且不能赋值时使用。

条件判断语句(if)

a:=10
if a:=1 ;a>0 {
    fmt.Println(a)
}
fmt.Println(a)

输出:
1
10
  • 由代码可见 if 不需要括号,且可以声明值
  • 声明值只在该 if 语句块有效且会覆盖外部,同名的值,外部值在 if 外有效并显示。

循环语句(for)


    //for 有三种形式
    a:=1
   // 1 无条件
    for {
        a++
        if a>5 {
            break//跳出循环
        }
    }

    // 2 只带条件
    for a<3 {
        a++
    }

    // 3 常用形式

    for i:=1;i<3 ;i++  {

    }

switch语句

a:=1
//正常形式
    switch a {
    case 0:
        fmt.Println("a=0")
    case 1:
        fmt.Println("a=1")
    default:
        fmt.Println("000")
    }
    //不写条件时,可以使用表达式
    //在一个条件满足时,想继续执行,需要显示调用"fallthrough"语句
    switch  {
    case a>=0:
        fmt.Println("a>=0")
        fallthrough
    case a>=1:
        fmt.Println("a>=1")
    default:
        fmt.Println("000")
    }

跳转语句:goto、break、continue

  • 跳转语句,不加标签在跳出最内层循环,加标签可跳出多层循环
  • 加标签时,跳转到标签位置。
  • 标签区分大小写,不存在标签编会报错
  • break 跳出并结束循
  • goto调整程序执行位置shuzhu
  • continue 结束本次循环,进入下次循环

数组(array)

  • 格式: var 数组名称 [数组长度] 数据类型 列: var a[2] int
  • 长度不同的数组不能相互转换
  • 当不知道数组长度时 […] 编译器会根据结果来确定数组长度 a:= […] int {1,2,3}
  • 数组没有的值为默认零值,
  • 数组中可以通过“:”为下标位赋值,前面是下标后面是值 列:a:=[…]int {0:1,1:2,10:1},未赋值的地方为默认值。

你可能感兴趣的:(服务器)