GO语言基础(GOweb编程)

  • GO的关键字,只有25个。
break defalut func interface select
case defer go map struct
chan else goto package switch
const fallthrough if range type
continue for import return var
  • 定义变量
var variableName type
//定义多个变量
var vname1,vname2,vnmae3 type

定义变量并初始化

var variablename type = value
//初始化多个变量
var vname1,vname2,vname3 type= v1,v2,v3

当然也可以直接忽略类型的声明,go语言会根据变量相应的类型来初始化它们。

也可以使用:=替代var和tap,但是这种语法只可以在函数内部使用。

_是特殊的变量名,任何赋予它的值都会被丢弃。

_,b := 34,35
  • 常量

常量可以是数值、布尔值、字符串类型。

const constantName = value
//也可以指定type
const Pi float32 = 3.1415926
  • bool类型

false/true

  • 数值类型

rune, int8, int16, int32, int64 和 byte, uint8, uint16, uint32, uint64。其中 rune 是 int32 的别称,byte 是 uint8 的别称。

int类型有int,int8,int16,in32,int64 int的长度默认是32bit

float类型有float32和float64两种,默认是float64

GO还支持复数,它的默认类型是complex128(64位实数+64位虚数)

var c complex64 = 5+5i
  • 字符串

使用""或``括起来定义。

在GO语言中,字符串是不可变的。

可以使用+来连接字符串。

使用``声明的字符串在代码中的形式就是打印时的形式,按照原样输出。

  • 错误类型

Go 内置有一个 error 类型,专门用来处理错误信息。

err := errors.New("this is a error")
if err != nil {
    fmt.Print(err)
}
  • Go程序设计的一些规则

大写字母开头的变量是可以导出的,是公有变量,小写字母开头的就是不可导出的,是私有变量。

大写开头的函数也一样。

  • array
var arr[n]type
a := [3]int{1,2,3}

数组之间的赋值是值的赋值。如果要使用指针,那么就需要用到slice类型。

多维数组

array := [2][3]{{1,2,3,4}.{5,6,7,8}}
  • slice

slice总是指向一个底层的array。

var fslice[]int
slice := []byte{'a','b','c','d'}

slice通过array[i:j]来获取,array[j]不被包含,长度时i-j。

slice 是引用类型,所以当引用改变其中元素的值时,其它的所有引用都会改变该值。

  • slice的内置函数

len获取slice的长度,cap获取容量,append向slice中追加元素,copy从源slice的src中复制元素到目标dst,并且返回复制的元素的个数。

  • map

map和slice一样,通过key来操作,但是slice的index只能是int类型,而map多了很多类型,可以是int,可以是string及所有完全定义了==和!=操作的类型

var numbers map[string]int

numbers := make(map[string]int)
//赋值
numbers["one"]=1

map是无序的,必须通过key来获取value。

map也是引用类型。

len同样适用。

通过delete删除map的元素

map的初始化
rating := map[string]float32{"c":5,"Go":4.5,"Python":4.5,"c++":2}
  • make,new操作

make用来内建类型(map、slice和channel)的内存分配。new用于各种类型的内存分配。

new(T)分配了零值填充的T类型的内存空间,并且返回其地址,即一个*T类型的值。

new返回一个指针

make只能创建slice、map和channel,并且返回一个有初始值的T类型,而不是*T.

  • 零值
int     0
int8    0
int32   0
int64   0
uint    0x0
rune    0 // rune 的实际类型是 int32
byte    0x0 // byte 的实际类型是 uint8
float32 0 // 长度为 4 byte
float64 0 // 长度为 8 byte
bool    false
string  ""
posted @ 2021-04-20 22:30  Gumi-21  阅读(222)  评论(0)    收藏  举报