• Golang 入门系列(三)Go语言基础知识汇总


    前面已经了 Go 环境的配置和初学Go时,容易遇到的坑,大家可以请查看前面的文章 https://www.cnblogs.com/zhangweizhong/category/1275863.html

    在这篇文章中,下面为初学者汇总下Go语言基础知识:

    1. Go 程序的基本结构

    下面是一个Go 程序的基本结构,包含(包声明,引入包,函数等)

    package main // 定义包名,package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
    
    import "fmt" // 导入需要使用的包(的函数,或其他元素)
    
    func main() { // 程序的入口函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数。
      fmt.Println("Hello, World!")
    }

    2. 数据类型

    go内建基本数据类型包括基本数据类型和高级数据类型

    1. 基本数据类型
      布尔类型(bool)

      数值类型

        整数类型(byte,rune,int/uint,int8/uint8,int16/uint16,int32/uint32,int64/uint64)
        浮点类型(float32,float64)
        复数类型(complex64,complex128)

      字符串类型
        string Go的字符串是由单个字节连接起来的。使用UTF-8编码标识Unicode文本。

    2. 高级数据类型

      数组(array)
      切片(slice)
      字典(map)
      通道(channel)
      函数(function)
      结构体(function)
      接口(interface)
      指针(*Xxx,Pointer,uintptr)

    如果按照底层结构划分,值类型包括(所有基本数据类型,数组,结构体),引用类型包括(slice,map,channel,function,interface,指针)


    3. 变量&常量

      1. 变量名由字母、数字、下划线组成,其中首个字母不能为数字,例:var name string
      2. 声明
        a.指定变量类型,声明后若不赋值,使用默认值。
          var name string
          name = "李四"

        b.根据值自行判定变量类型。
          var name = "李四"

        c.简短形式,省略var, 注意
          age := 10

      注意
        (:=)是使用变量的首选形式
        (:=)只能被用在函数体内,而不可以用于全局变量的声明与赋值。
        (:=)左侧的变量不应该是已经声明过的,否则会导致编译错误。


      3. 常量的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。
        1. 常量声明:const b string = "abc"
        2. iota,特殊常量
          const (
            a = iota
            b
            c
          )

        1. 代表连续的,无类型的整数常量,
        2. 以const开始的常量声明语句为单位,
        3. 从0开始,没赋给一个常量就递增一次
        4. 一旦跨越以const开始的常量声明语句就归0

    4. 运算符
      1. 算术运算符,a + b ,包括(+,-,*,/,%,++,--)
      2. 关系运算符,返回True或False ,a == b ,包括(==,!=,>,<,>=,<=)
      3. 逻辑运算符,返回True或False ,包括(&&,||,!)
      4. 地址运算符 

        & : 返回变量存储地址 (&originalValue)

        * :指针变量 (*pointerValue)

      5. 接收运算符,用于接收通道的数据或者给将数据加入通道(intChan<-1, <-intChan)


    5. 错误处理

      1. error 接口,(errors.New(value),fmt.Error(),自定义错误类型)

    func Divide(a, b float64) (result float64, err error) {
        if b == 0 {
            result = 0.0
            err = errors.New("runtime error: divide by zero")
            return
        } else {
            result = a / b
            err = nil
        }
        return
    }


      2. panic 函数,panic(value) 与error 接口联用,

        var user = os.Getenv("USER")
        if user == "" {
            panic("The USER environment variable is not set.")
        }

      3. recover 函数,与defer语句联用,

    func TestB() (err error) {
        defer func() { //在发生异常时,设置恢复
            if x := recover(); x != nil {
                err = fmt.Errorf("internal error: %v", x)
            }
        }()
    
        panic("func TestB(): panic")
    }

    6. Go 基本命令

      go build 命令主要是用于测试编译。在包的编译过程中,若有必要,会同时编译与之相关联的包。

        go run hello.go

      go get 命令主要是用来动态获取远程代码包的。

        go get github.com/go-sql-driver/mysql

      go run 命令主要用于编译并运行Go程序。

        go run hello.go

      go test 命令,会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件。

  • 相关阅读:
    005.Kickstart部署多系统
    004.Kickstart部署之FTP架构
    003.Kickstart部署之HTTP架构
    C#并发编程之异步编程(二)
    设计模式之策略者模式
    设计模式之职责链模式
    C#并发编程之异步编程(一)
    C#并发编程之概述
    微服务探索与实践—总述
    设计模式之模板方法模式
  • 原文地址:https://www.cnblogs.com/zhangweizhong/p/9524937.html
Copyright © 2020-2023  润新知