目录

Go语言基础(一)

关键字

break    default      func    interface    select
case     defer        go      map          struct
chan     else         goto    package      switch
const    fallthrough  if      range        type
continue for          import  return       var

注意:关键字不可以使用

变量声明

1、一般声明

​ 1、显示声明:var variable int ,变量名是在后面

​ 2、隐式声明:var variable = 1, 没有类型

​ 3、简短声明:varible:=1 .

​ 4、多变量声明:varible1,varible2:=1,2,

​ 5、_,varible:=1,2. 下划线 _一般用于占位符,不进行使用,可以用于索引等

2、分组声明

const (
	i=100
	j=200
)
var (
	a=100
	b=200
)

**注意:**go语言是可以不声明类型直接用,但是简短声明是必须在函数内生效,不可用于包内。go和python 有很多类似的地方。分组声明针对于同一种类型的变量可以放在一起声明

常量

const:是常量的标志,可以定义为多个类型,例如:

​ 1.const constName =value

​ 2.const pi float=3.14

​ 3.const Max="prefix”

变量类型

​ 1、Boolean类型:true/false

​ 2、rune/int/int8/int16/int32/…等等,具体可以百度,会根据编译器的32/64位来决定长度。int和int32类型长度一致,但是不可通用

​ 3、float32/float64:无float类型

​ 4、string:字符型。例如:var varible="1233”,或者多行数据用反斜引号。var hello =`wowoowowo`

变量可用性

  • 变量命名规则遵循驼峰原则

  • 大写字母开头的变量/函数名是public,可以被其他包直接用。只能在当前包可用

  • 小写字母开头的变量/函数名是private,不可被其他包直接用


高级数据结构

1、Array数组

var varible [10]int,array长度不可变,默认赋值是0

数组初始化:var varible[10]int

varible[0]=1

a:=[3]int{1,2,3}//指定个数初始化

a:=[...]int{1,2,3,4,5}//可自动计算元素个数

多维数组初始化:

doubleArray:=[2][4]int{[4]int{1,2,3,4},[3]int{1,2,3}}
doubleArray:=[2][4]int{}

2、slice-动态数组

声明var flslice[]int可以没有长度。底层实现还是array,只是是引用而已。

声明并初始化数据:flslice:=[]int{1,2,3,4,5}

取值:flslice[i:j],遵循左闭右开的原则,即[1,2)这样。

切片:flslice[1:2],flslice[2:3]

*提示:*slice和数组切片操作可参照python的list操作,基本类似

3、map-映射

map与python的dict是类似的,k-v结构,key可以是int或者string等类型。map和slice一样都是引用类型,没有长度限制。make函数用于内建类型(map, slice,channel)进行内存分配

​ **声明:**var numbers map[string] int,key是string,value是int类型

numbers:=make(map [string]int)

numbers['1']=2 //直接赋值

​ **初始化:**rating:=map [string]float32{"c":23,"b":2}

安全取值:

value,ok := rating['c']
if ok{
    fmt.Println('have found ',value)
}else{
    fmt.Println('not found')
}

4、make与new的区别

  • make是指定slice、map、channal这三种类型分配内容,返回的是类型的零值
  • new是建立内存,返回的是指针。

5、零值

是类型变量填充前的默认值,int类型的都是0,字节或者16进制值会有点不一样。布尔型是false,string类型是”".

注意:引用类型会被另外一个引用改变,想想可不可以加const就不会被改变了。