GO语言基础(一) | 青训营

54 阅读2分钟

1.关键字

nil 相当于null

println 换行打印

printf 格式化打印

type 声明一种类型

2. 变量声明

  1. 第一种,指定变量类型,声明后若不赋值,使用默认值0
var a int   (变量类型在变量名之后)
  1. 第二种,根据值自行判定变量类型。
var v_name = value
  1. 第三种,省略var, 注意 :=左侧的变量不应该是已经声明过的,否则会导致编译错误。(只能定义局部变量,不能定义全局变量)
v_name := value 	 	// 例如 	var a int = 10 	var b = 10 	c : = 10
  1. 多变量命名
var x, y int 

6.常量

const a int = 100 //const定义枚举类型 
const//关键字iota,初始值为0,每行iota加1 
    A = iota 
    B 
    C 
    D ) 
iota按行变化,每行加1 iota只能出现在const

3.函数声明

  1. 第一种(匿名)
func foo2**(a string, b int)** *(int, int)*{

return 666,777

}

粗体是参数,斜体是返回值类型

  1. 第二种,给返回值命名
func foo3(a string, b int) (r1 int,r2 int){

r1 = 1000

r2 = 2000

return 

}
  1. 第三种,返回同一种类型可以合并
func foo3(a string, b int) (r1 ,r2 int){

r1 = 1000

r2 = 2000

return 

}

R1和r2是局部变量,在foo3{}内,初始值都为0

4.导包

image.png

在包名前面加上别名

“-”表示匿名导包

匿名导包可以导入包但是不能使用包里的函数

image.png

“.”别名可以直接使用包里的函数(不建议使用,当都使用这个方法是,会造成混淆)

不用写lib.

4.go指针

image.png

支持二级指针和三级

6.defer函数

函数最后执行 多个defer的执行顺序:栈结构存储

image.png

defer和return执行顺序

return先执行

5.数组和动态数组的区别

定义数组

var myArray1 [10]int       //全为0
myArray2     :=[10]int{1,2,3,4}  //前四个数为1,2,3,4

image.png

for循环

image.png

动态数组

myArray := [ ]int{1,2,3,4} //切片slice

image.png

7.slice四种声明方式

1.声明slice1是一个切片,并且初始化,默认值是1,2,长度len是3

slicel := [ ]lint{123}

2.声明slice1是一个切片,但是并没有给slice分配空间

var slice1 lint

slice1 = make([]int3) //开辟3个空间 ,默认值是0

3.声明slice1是一个切片,同时给slice分配空间,3个空间,初始化值是0

var slice1 []lint = make([]lint,3)

4.声明slice1是 一个切片,同时给sLice分配空间,3个空间,初始化值是0,通过:=推导出slice是一个切片

slice1 := make([]int3)