11、标准库_fmt
fmt实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两部分。
向外输出PrintPrint:函数会将内容输出到系统的标准输出,直接输出内容。
1func Print(a ...interface{}) (n int, err error)
Printf:支持格式化输出字符串。
1func Printf(format string, a ...interface{}) (n int, err error)
Println:再输出的内容结尾添加一个换行。
1func Println(a ...interface{}) (n int, err error)
Fprint将内容输出到一个io.Writer接口类型的变量w中,通常使用这个函数往文件中写入内容。
Frint:原样写入文件。
Frintf:根据指定的格式化字符串写入到文件
Frintln:写入到文件后自动加换行。
1234567891011func fmtFPrint() { fmt.Fprint(os.Stdou ...
10、function
函数Go语言中支持函数,匿名函数,闭包。
函数的定义使用func关键字进行函数定义
123func(参数)(返回值){ 函数体}
函数名:由字母、数字、下划线组成。但函数名的第一个字母不能是数字。在同一个包内,函数名也称不能重名(包的概念详见后文)。
参数:参数由参数变量和参数变量的类型组成,多个参数之间使用,分隔。
返回值:返回值由返回值变量和其变量类型组成,也可以只写返回值的类型,多个返回值必须用()包裹,并用,分隔。
函数体:实现指定功能的代码块。
Example:
1234//求两个数之和的函数:func sum(x int, y int)(s int){ return x + y}
1234//一个既不需要参数也没有返回值的函数func f1(){ fmt.Println("一个既不需要参数也没有返回值的函数")}
函数的调用通过函数名()的方式调用
12s := sum(1, 2)fmt.Println(s)
调用有返回值的函数时,可以不接收其返回值
参数类型简写函数的参数中如 ...
09、map
mapGo语言中提供的映射关系容器为map,其内部使用散列表(hash)实现。
map是一种无序的基于key-value的数据结构,Go语言中的map是引用类型,必须初始化才能使用。
定义123map[keyType]valusType//keyType:map的key类型//valusType:map的值类型
map类型的变量默认初始值为nil,需要使用make()来分配内存。
12//定义并初始化一个mapa := make(map[keyType]valusType, [cap])
//cap为可选参数,但我们应该在初始化map是就为其指定一个合适的容量。
map的基本使用123456//声明时并初始化map的值b := map[string]string{ "username": "小亮", "password": "123456",}fmt.Println(b) // map[password:123456 username:小亮]
12345678910//定义 ...
05、运算符
指针Go语言中的指针任何程序数据载入内内存后,在内存都有他们的地址。而为了保存一个数据在内存中的地址,我么就需要用到指针变量。
再Go语言中的指针不能进行偏移和运算,只需记住两个符号&(取地址),*(根据地质取值)。
指针地址和指针类型每个变量在运行时都有一个地址,这个地址代表变量再内存中的位置,Go语言使用&字符放在变量前面进行”取地址“操作。Go语言值类型(int, float, bool, string, array, struct)都有其对应的指针类型,如*int, *int64,*string等。
1ptr := &v //v的类型为T
12345//取地址a := 16b := &afmt.Println(a, &a) // a:10 ptr:0xc00001a078fmt.Printf("%p %T %d", b, b, &b) // b:0xc00001a078 type:*int :0xc00001a078
指针取值对普通变量使用&操作符可以获得这个变量的指针,对指针使用*操作可以获得该地 ...
07、切片
切片(slice)引子因为数组的长度是固定不变的并且数组的长度属于类型的一部分,所以数组有很多的局限性。
1234567func arraySum(arr [3]int) (int) { var sum int for _, a := range arr{ sum += a } return sum}
该数组只能接收[3]int类型的参数,其他类型都不支持。
切片切片(Slice)是一个拥有相同类型元素的可变长度的序列。它是基于数组类型做的一层封装。它非常灵活,支持自动扩容。
切片是一个引用类型,它的内部结构包含地址、长度和容量。切片一般用于快速地操作一块数据集合。
切片的定义声明切片类型的基本语法:
1var name []T //name为变量名,T为类型
12345678910111213//切片定义var s1 []int // 定义一个存放int类型的切片var s2 []string //定义一个存放string类型的切片fmt.Println(s1, s2)//nil类似空,没有初始化,在内存上没有开辟空间fmt.Printl ...
06、数组
Array(数组)数组是同一种数据类型元素的集合。 在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。 基本语法:
1234//定义一个长度为3的,类型为int的数组a//不进行初始化默认零值(string:"", int : 0, boo : false)var a [3]intfmt.Println(a) //[0 0 0]
数组定义1var 数组变量名 [数组长度]T
数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变化。
123var b [3]boolfmt.Printf("类型:%T", b) ==> 类型:[3]bool
数组初始化
方法一
1234//方式一数组初始化var numArray [3]intnumArray = [3]int{1,2}fmt.Println(numArray)
方式二
123//方式二,根据初始值自动推算数组长度arr := [...]int{1,2,3,4,5,6,7,8,9,0}fmt.Prin ...
05、运算符
运算符1、算术运算符
2、关系运算符
3、逻辑运算符
4、位运算符
5、赋值运算符
算数运算符
运算符
描述
+
相加
-
相减
*
相乘
/
相除
%
求余
注意: ++(自增)和--(自减)在Go语言中是单独的语句,并不是运算符。
关系运算符
运算符
描述
==
检查两个值是否相等,如果相等返回 True 否则返回 False。
!=
检查两个值是否不相等,如果不相等返回 True 否则返回 False。
>
检查左边值是否大于右边值,如果是返回 True 否则返回 False。
>=
检查左边值是否大于等于右边值,如果是返回 True 否则返回 False。
<
检查左边值是否小于右边值,如果是返回 True 否则返回 False。
<=
检查左边值是否小于等于右边值,如果是返回 True 否则返回 False。
逻辑运算符
&&
逻辑 AND 运算符。 如果两边的操作数都是 True,则为 True,否则为 False。
||
逻辑 OR 运算符。 如果两边的操作数 ...
04、流程控制
Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码,降低重复代码而生的结构,属于扩展类的流程控制。
if else(分支结构)
if条件判断的基本写法
1234567if 表达式1 { 分支1} else if 表达式2 { 分支2} else{ 分支3}
Go语言规定与if匹配的左括号{必须与if和表达式放在同一行,{放在其他位置会触发编译错误。 同理,与else匹配的{也必须与else写在同一行,else也必须与上一个if或else if右边的大括号在同一行。
123456789//多条件判断size := 19if size > 35 { fmt.Println("大")} else if size > 18 { fmt.Println("中")}else { fmt.Println("小")}
if条件判断 ...
03、Go语言基础_基本数据类型
Go语言中有丰富的数据类型,除了基本的整型、浮点型、布尔型、字符串外,还有数组、切片、结构体、函数、map、通道(channel)等。
基本数据类型整型整型分为以下两个大类: 按长度分为:int8、int16、int32、int64 对应的无符号整型:uint8、uint16、uint32、uint64
其中,uint8就是我们熟知的byte型,int16对应C语言中的short型,int64对应C语言中的long型。
类型
描述
uint8
无符号 8位整型 (0 到 255)
uint16
无符号 16位整型 (0 到 65535)
uint32
无符号 32位整型 (0 到 4294967295)
uint64
无符号 64位整型 (0 到 18446744073709551615)
int8
有符号 8位整型 (-128 到 127)
int16
有符号 16位整型 (-32768 到 32767)
int32
有符号 32位整型 (-2147483648 到 2147483647)
int64
有符号 64位整型 (-922337203 ...
02、Go语言基础_常量和变量
标识符在编程语言中标识符就是程序员定义的具有特殊意义的词,比如变量名、常量名、函数名等等。 Go语言中标识符由字母数字和_(下划线)组成,并且只能以字母和_开头。 举几个例子:abc, _, _123, a123。
关键字关键字是指编程语言中预先定义好的具有特殊含义的标识符。 关键字和保留字都不建议用作变量名。
标识符:
12345break default func interface selectcase defer go map structchan else goto package switchconst fallthrough if range typecontinue for import return var
保留字:
12345678910Constants: true false iot ...