go语言基础知识
go语言基础知识
基础于c,具有部署简单、并发号、执行性能好的特点。与java相比,没有类和继承,相比java更加高效,相比c更加简单易编译。go对多核心优化好,可让程序员调用硬件更多性能。在很多语法现象上有从c语言简化,同时为了降低歧义和程序员语言风格对代码功能的影响,对代码书写方式和工程文件结构等做了规定。
hello world
1 | package main // 声明 main 包,main包是唯一的,是入口。 |
go语言以包为管理单位,每个go源文件需要声明其所属包,一目录下同级文件属于同一个包。
数据类型和变量生成
数据类型
- bool 布尔
- string 字符串
- int、int8、int16、int32、int64 整型(分别8进制、16进制、32进制等)
- uint、uint8、uint16、uint32、uint64、uintptr
- byte // uint8 的别名
- float32、float64 实型
变量赋值方式
var name type
变量声明方式
1 | var ( //批量变量 |
全局变量在主函数之外进行声明。
GO语言容器
数组遍历
1 | var team [3]string |
切片
1 | fmt.Println(team[1:2]) //输出数组第二和第三个的内容。相当于生成切片。 |
map概念(python中的字典)
map是一种特殊的数据结构,是由key(索引)和value(值)两个元素组合成的无序集合。map的容量是动态的。
1 | package main |
go语言程序结构
判断
1 | if condition1 { |
循环
只支持for循环
1 | sum := 0 |
break
退出本次循环。 goto
可以直接跳出多层循环到标签处。
1 | goto breakHere |
函数
一般函数声明
1 | func typedTwoValues() (int, int) { |
1 | package main |
结构体
go语言没有类的概念,结构体与c语言类似。(不过我感觉c和go的结构体和java的类挺相似,因为都可以属性继承等。)
1 | type Point struct { //结构体定义 |
接口概念
虽然go没有类和继承的概念,但其通过接口的概念实现面对对象的特性(一种抽象的存在)。
1 | type writer interface{ //定义接口名,interface是定义接口关键词。接口类型由数个方法构成,默认在接口名后面加er以便于区分 |