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>.赋值运算符 用于将表达式的 ...
随机推荐
- 【SpringCloud】Zuul在何种情况下使用Hystrix
首先,引入spring-cloud-starter-zuul之后会间接引入: hystrix依赖已经引入,那么何种情况下使用hystrix呢? 在Zuul的自动配置类ZuulServerAutoCon ...
- Linux之Nginx使用
一.nginx安装(编译安装) 1,安装需要的依赖库 yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel ...
- 第45章 工具 - Identity Server 4 中文文档(v1.0.0)
该IdentityServerTools是为IdentityServer编写扩展代码时,你可能需要有效的内部工具的集合.要使用它,请将其注入代码,例如控制器: public MyController( ...
- C#多线程编程笔记
在开发中经常有遇到因为程序执行的时间过长,而造成程序假死的情况,这是因为我们的程序是同步执行的,当执行到需要长时间的操作时,程序就会等待当前的操作完成,从而造成程序假死.C#的异步与多线程就是为了解决 ...
- Request.Params
在开发中有时会用到Request.Params["id"]来获取参数,那么到底是从什么地方接收参数呢? 一般情况下,有三种方式进行参数传递1.GET 方式,通过url传递,如?id ...
- C# 跨进程 设置窗口owner
窗口间跨进程通信 1. 发送方 public const int WM_InsertChart_Completed = 0x00AA; //查找窗口 [DllImport("User32.d ...
- 配置javaJDK环境
1.官网下载JDK包 2.解压包 3.打开vi /etc/profile文件添加一下内容 export JAVA_HOME=/usr/jdk1.8.0_121 #你的jdk所在的目录 export C ...
- 林业有害生物监测系统(重庆宇创GIS)
本文由重庆宇创GIS团队原创,转载请注明来源http://www.cnblogs.com/ycdigit/p/8916073.html 一.概述 林业有害生物监测信息平台(森林病虫害监测预警系统) ...
- 广州.NET微软技术俱乐部微信群各位技术大牛的blog
1. .net core和微服务领域的张善友张队长和马洪喜,证明了.net core和微服务已经在各方面都不比java差2. Xamarin的卢建晖,证明了.net在移动开发领域也是很牛的.3. wi ...
- OPC协议解析-关于OPC协议的几个问题
1 什么是OPC协议? 为了便于自动化行业不同厂家的设备和应用程序能相互交换数据,定义了一个统一的接口函数,就是OPC协议规范.有了OPC就可以使用统一的方式去访问不同设备厂商的产品数据. OP ...