前面已经了 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 == {
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的文件,生成并运行测试用的可执行文件。

Golang 入门系列(三)Go语言基础知识汇总的更多相关文章

  1. C语言基础知识汇总

    c语言执行步骤: 一.编辑程序 1.编写c语言的代码,保存在扩展名.c的文件中,源文件. 2.编写代码有三种方式: a.vi命令方式系统自带 b.ultraedit网络下载 c.xcode网络下载 二 ...

  2. 【Go语言入门系列】Go语言工作目录介绍及命令工具的使用

    [Go语言入门系列]前面的文章: [保姆级教程]手把手教你进行Go语言环境安装及相关VSCode配置 [Go语言入门系列](八)Go语言是不是面向对象语言? [Go语言入门系列](九)写这些就是为了搞 ...

  3. OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  4. 李洪强iOS开发之OC语言基础知识

    OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...

  5. 【Xamarin开发 Android 系列 4】 Android 基础知识

    原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...

  6. MySQL系列(一)--基础知识大总结

    MySQL系列(一)---基础知识大总结 前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里只是作为简单的介绍,但是具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续 ...

  7. C语言基础知识-数组和字符串

    C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...

  8. C语言基础知识-程序流程结构

    C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...

  9. C语言基础知识-运算符与表达式

    C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...

随机推荐

  1. WebGL 纹理颜色原理

    本文由云+社区发表 作者:ivweb qcyhust 导语 WebGL绘制图像时,往着色器中传入颜色信息就可以给图形绘制出相应的颜色,现在已经知道顶点着色器和片段着色器一起决定着向颜色缓冲区写入颜色信 ...

  2. JVM(二)Java虚拟机组成详解

    导读:详细而深入的总结,是对知识"豁然开朗"之后的"刻骨铭心",想忘记都难. Java虚拟机(Java Virtual Machine)下文简称jvm,上一篇我 ...

  3. Spring Boot 2.x (一):HelloWorld

    简介 本系列基于Spring Boot 2.1.0 的官方文档,除去了文档中一些冗余的东西,加上了一些自己的理解,意图是在于帮助更多初识Spring Boot的人来进行一次探险. 本系列建议具有Jav ...

  4. DSAPI HTTP监听服务端与客户端

    本文中,演示了使用DSAPI.网络相关.HTTP监听,快速建立服务端和客户端. HTTP监听服务端的作用,是监听指定计算机端口,以实现与IIS相同的解析服务,提供客户端的网页请求,当然,这不仅仅是应用 ...

  5. file_get_contents('php://input') 和POST的区别

    之前记得写过这2者的区别,今天看群里有个朋友也提出了怪异的问题,说是“file_get_contents('php://input')获取不到curl post请求的数据的问题”?其实这并不是所谓的& ...

  6. python学习笔记(十 一)、GUI图形用户界面

    python图形用户界面就是包含按钮.输入框.选择框等组件的窗口.主要依赖与工具包进行代码编写.python GUI工具包并发互斥的,你可以选择多个工具包进行安装,有极大选择空间.每个工具包都有不同用 ...

  7. fork/join概述

    Fork/Join是java 7 解决并发问题的解决方案. 是 java内部并行框架.核心思想分别为拆分任务和结果合并,在核心思想外,为了提高cpu多核的利用率,设计了工作窃取算法,并将工作队列设计为 ...

  8. 2018/12/21:Date类

    1.Date类 getDate()返回一个月的某一天 1-31 getDay()返回一周的某一天 getFullyear()返回四位数的年份 getMonth()返回月份 比实际情况小 1 0代表1月 ...

  9. CSS---伪类与伪元素的区别

    在CSS中对于伪类和伪元素并没有做出很明显的区别定义,两者的语法是一样的,都是以 : 开头,这样导致我们将一些伪元素误认为伪类,如 :before :after 而在CSS3中给出了明显的定义. ☞ ...

  10. 深度 | AI芯片终极之战

    深度 | AI芯片终极之战 https://mp.weixin.qq.com/s?__biz=MzA4MTQ4NjQzMw==&mid=2652712307&idx=1&sn= ...