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 == {
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语言基础知识汇总的更多相关文章
- C语言基础知识汇总
c语言执行步骤: 一.编辑程序 1.编写c语言的代码,保存在扩展名.c的文件中,源文件. 2.编写代码有三种方式: a.vi命令方式系统自带 b.ultraedit网络下载 c.xcode网络下载 二 ...
- 【Go语言入门系列】Go语言工作目录介绍及命令工具的使用
[Go语言入门系列]前面的文章: [保姆级教程]手把手教你进行Go语言环境安装及相关VSCode配置 [Go语言入门系列](八)Go语言是不是面向对象语言? [Go语言入门系列](九)写这些就是为了搞 ...
- OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 李洪强iOS开发之OC语言基础知识
OC语言基础知识 一.面向对象 OC语言是面向对象的,c语言是面向过程的,面向对象和面向过程只是解决问题的两种思考方式,面向过程关注的是解决问题涉及的步骤,面向对象关注的是设计能够实现解决问题所需功能 ...
- 【Xamarin开发 Android 系列 4】 Android 基础知识
原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...
- MySQL系列(一)--基础知识大总结
MySQL系列(一)---基础知识大总结 前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里只是作为简单的介绍,但是具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续 ...
- C语言基础知识-数组和字符串
C语言基础知识-数组和字符串 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.数组概述 在程序设计中,为了方便处理数据把具有相同类型的若干变量按有序形式组织起来的方式我们称为数组 ...
- C语言基础知识-程序流程结构
C语言基础知识-程序流程结构 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.概述 C语言支持最基本的三种程序运行结构:顺序结构,选择结构,循环结构. 顺序结构:程序按顺序执行, ...
- C语言基础知识-运算符与表达式
C语言基础知识-运算符与表达式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.常用运算符分类 1>.算术运算符 用于处理四则运算. 2>.赋值运算符 用于将表达式的 ...
随机推荐
- 【Node.js】一、搭建基于Express框架运行环境+更换HTML视图引擎
1)安装express generator生成器 这个express generator生成器类似于vue-cli脚手架工具,用来创建一个后端项目,首先我们要对生成器进行全局安装,在cmd中输入下 ...
- SSH连接GitHub并配置ssh key
SSH连接GitHub并配置ssh key 配置git的ssh提交,主要需要以下三步: 1.设置Git的user name和email 2.生成ssh 3.配置git 的ssh key 一.设置Git ...
- DSAPI多功能组件编程应用-反射相关
[DSAPI.DLL下载地址] 在.Net中,反射技术是一种入门困难,熟用快速的东西,对于没有接触过反射技术的程序员来说的确是头疼的,看一旦自己写过了,上手就非常简单了.在本节,将部分.N ...
- docker 创建mysql镜像,并成功进行远程连接
1.安装 1.1 拉取镜像 docker pull mysql 拉取成功可以验证一下 docker images 1.2 创建并启动一个mysql容器 docker run --name ly-mys ...
- JsonConvert.DeserializeObject反序列化
JObject ci = JsonConvert.DeserializeObject<JObject>(row); string s = ci["txtContent" ...
- [android]android项目的目录结构
/**************2016年4月23更新*********************/ 相关技术: 知乎:用eclipse做Android开发,新建工程时应如何选择Android的版本? 肥 ...
- vue点击按钮给商品按照价格进行倒叙
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 一句话总结kNN算法
一句话总结kNN算法 核心:模板匹配,将样本分到离它最相似的样本所属的类. kNN算法本质上使用了模板匹配的思想.要确定一个样本的类别,可以计算它与所有训练样本的距离,然后找出和该样本最接近的k个样本 ...
- SuperMap iClient 如何使用 WMTS 地图服务(转载)
原文链接: WMTS服务初步理解与读取 https://blog.csdn.net/supermapsupport/article/details/76806670 SuperMap iClient ...
- postgresql 日志报错could not write to log file: No space left on device,could not write lock file "postmaster.pid": No space left on device
今天遇到了一个特别奇怪的问题,我在用docker容器的时候,发现我的postgresql怎么也启动不起来 尝试了N多种办法,最后看了看postgresql的日志发现 postgresql 日志中报错 ...