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

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

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

1. Go 程序的基本结构

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

package main 
 
import "fmt" 
 
func 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的文件,生成并运行测试用的可执行文件。

原文发布于微信公众号 - 码农章为忠(coder-zwz)

原文发表时间:2018-09-11

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Android Note

Kotlin —  Destructuring Declarations(解构声明)

1232
来自专栏大闲人柴毛毛

三分钟理解“模板方法模式”——设计模式轻松掌握

模板方法模式的官方定义: 在模板方法模式中,只定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定...

35610
来自专栏WebDeveloper

跟我学习php字符串常用函数-下篇

1> mixed parse_url ( string $url [, int $component = -1 ] )

832
来自专栏魂祭心

原 Curry的js实现

3515
来自专栏coding

实例讲解PHP异常PHP异常的概念内置异常类异常可以冒泡传递自定义异常类自定义异常处理器像处理异常一样处理错误

2544
来自专栏云霄雨霁

Java虚拟机--Class文件结构

1665
来自专栏海天一树

小朋友学Java(5):静态方法

先编写程序: class Demo { public void fun1() { System.out.println("Hello")...

2866
来自专栏zhangdd.com

nginx location匹配规则

~      #波浪线表示执行一个正则匹配,区分大小写 ~*    #表示执行一个正则匹配,不区分大小写 ^~    #^~表示普通字符匹配,如果该选项匹配...

1004
来自专栏PHP在线

php

单例设计模式 1.控制一个类只能创建一个对象,设置构造函数为私有的。 2.设置静态方法调用类中方法返回实例化。 3.在类中设置静态属性存放实例化对象。 ? 命名...

3297
来自专栏个人随笔

论 异常处理机制中的return关键字

Java中,执行try-catch-finally语句需要注意: 第一:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会...

2848

扫码关注云+社区