GO start

209 阅读3分钟

go语言的主要特性

  • 1.自动垃圾回收
  • 2.更丰富的内置类型
  • 3.函数多返回值
  • 4.错误处理
  • 5.匿名函数和闭包
  • 6.类型和接口
  • 7.并发编程
  • 8.反射
  • 9.语言交互性

go语言四种声明方式

  • 1.var 声明变量
  • 2.const 声明常量
  • 3.type 声明类型
  • 4.func 声明函数

数据类型--值类型

  • 值类型
  • int(32 or 64 ),int8,int16,int32,int64
  • uint(32 or 64 ),uint8,uint16,uint32,uint64
  • float32,float64
  • string
  • complex64 complex128
  • array (固定长度的数组)

数据类型--引用类型(指针类型)

  • slice--序列数组(最常用)
  • map --映射
  • chan --管道

内置函数--不需要导入即可直接使用

  • append -用来追加元素到数组,slice中,返回修改后的数组,slice
  • close -主要用来关闭channel
  • delete -从map中删除key对应的value
  • panic -停止常规的goroutine(panic和recover用来做错误处理)
  • recover-允许程序定义goroutine的panic动作
  • real -返回complex的实例 (complex,real,imag用于创建和操作复数)
  • imag -返回complex的虚部
  • make -用来分配内存,返回type本身(智能用于slice,map,channel)
  • new -用来分配内存,主要用来分配值类型,比如int,struct,返回执行type的指针
  • cap -capacity是容器的意思,用来返回某个容器的最大容量(只用于切片和map)
  • copy -用于赋值和连接slice 返回赋值的数目
  • len -来求长度,比如string,array,slice,map,channel,返回长度
  • print,println -底层打印函数在部署环境中建议使用fmt 包

内置接口

type error interface {//只要实现了Error()函数,返回值为string的都实现了err接口 Error() String }

基本数据类型

go有更明确的数字类型命名,支持unicode,支持常用数据结构

  • 类型---长度(字节)---默认值---说明
  • bool---1---false
  • byte---1---0
  • rune---4---0
  • int,uint---4|8---0
  • int8,uint8---1---0
  • int16,uint16---2---0
  • init32,uinit32---4---0
  • init64,uinit64---8---0
  • float32---4---0.0
  • float64---8---0.0
  • complex64---8------
  • complex128---16------
  • uintptr---4|8------
  • array---------值类型
  • struct--------值类型
  • syting--------""UTF-8 字符串
  • slice---------nil引用类型
  • map-----------nil引用类型
  • channel---------nil引用类型
  • interface---------nil接口
  • function----------nil函数
 注意:

    布尔类型变量的默认值为false。
    Go 语言中不允许将整型强制转换为布尔型.
    布尔型无法参与数值运算,也无法与其他类型进行转换。
字符串常用操作
  • len()-------------------------------------求长度
  • +|fmt.Sprintf-----------------------------拼接字符串
  • string.Split------------------------------分割字符串
  • string.Contains---------------------------判断是否包含
  • string.HasPrefix,string.HasSuffix---------前缀判断|后缀判断
  • strings.Index()|strings.LastIndex()-------子字符串出闲的位置
  • strings.Join()----------------------------join操作
golang中没有隐式类型转换

数组-go语言的数组和其他语言有很大不同

  • 1.数组式同一类型数据的固定长度序列
  • 2.数组定义:var a[len]int,数组的长度必须是常量,一旦定义不可改变
  • 3.长度是数组类型的一部分,因此var a [5]int 和var a[10]int是不同的类型
  • 4.数组可以通过下标进行访问,最后一个元素的下标是len-1
  • 5.访问越界,如果下表在数组长度之外,则触发越界,会panic
  • 6.数组是值类型,赋值和传参会复制整个数组,因此改变副本的值不会改变本身的值
  • 7.支持"=="和"!="操作,因为内存总是被初始化过去的
  • 8.指针数组[n]T,数组指针[n]T