美文网首页
Golang基础学习笔记

Golang基础学习笔记

作者: Boger_8cf1 | 来源:发表于2019-03-13 12:49 被阅读0次

<meta charset="utf-8">

一、各种语言入门例子:打印Hello,World!

package main

import (

"fmt"

)

func main(){

fmt.Println("Hello,World!")

}

二、定义变量

1、var name type_name = value

2、var name = value

3、name:=value // 只能定义为局部变量

Go语言中,所有变量都被初始化为零值

// int= 0 string ="" bool = false

// *int = nil //指针类型

三、

常量定义:

1、const name type_name = value

2、数据的初始化递增 与 iota连用

const (

INIT = iota

ONE

TWO

)

四、控制语句

1、 if else 条件语句 if后面判断条件不可以加() 而且{必须和if 在同一行

2、for 循环语句 后面不加()

3、switch case 不需要用break

五、结构体

变量如果定义为小写字母开头的话 意味着这个变量是这个结构体私有变量

六、map

// map 的定义

// map[key_type] value_type

var map_name map[string]int

//map 注意点 : map使用之前要进行初始化操作

func init() {

map_name = make(map[string]int)

}

func main() {

fmt.Println("")

map_name["111"] = 100

fmt.Println("map_name", map_name)

}

init()函数在变量定义之后 main函数执行之前执行。不需要被调用,自动调用。可以被定义多个

七、数组和切片

/*

知识点一 数组

特点:1、内存连续的数据集合 var arr[5] int --> arr[0]...arr[4]

2、数组取值 下标从0开始

3、作为函数参数 可以为值传递也可以为引用传递

知识点二 切片

特点: 1、切片底层是数组

2、动态增加(数组是固定大小)

3、函数参数属于引用传递

*/

// 数组定义

var arr_name [2] int

// 切片定义

var slice_name [] int

value_slice1 = slice_name[1:3:5]; // 容量 slice_name[n:m:f] 长度 len = m-n cap = f-n

八、匿名函数

/*

匿名函数的定义

j:=func(i,j int )(data int ){

data = i+j

return data

}

j是我们的函数的地址

x,y :=func(i,j int)(m,n int){

return j,i

}

*/

九、接口

/*

接口: go语言为了实现多态

1、定义接口

2、接口的使用 --->go语言为了实现多态

*/

type I_name interface {

Printflm() //接口的函数

}

//接口的实现函数

func Ts_Func(data I_name) {

data.Printflm()

}

type A1 struct {

}

type B1 struct {

}

func (this *A1) Printflm() {

fmt.Println("A1 Printflm")

}

func (this *B1) Printflm() {

fmt.Println("B1 Printflm")

}

func main() {

data1 := A1{

}

data2 := B1{

}

Ts_Func(&data1)

Ts_Func(&data2)

}

十、异常

/*

异常处理: panic recover

panice 是什么? :错误,严重错误。导致程序崩溃

产生的常见原因:1、map忘记初始化

2、并发安全 map

3、网络 数据库连接

4、数组越界的

defer 数据延迟处理

1、 close free

2、 conn 数据库连接 defer close()---》 error---》close(conn)

*/

func Panic_func() {

panic("12345")

}

func main() {

defer func() {

if err := recover(); err != nil {

strerr := fmt.Sprintf("%s", err)

fmt.Println(strerr)

}

}()

fmt.Println("data:")

Panic_func()

fmt.Println("data1:")

}

相关文章

网友评论

      本文标题:Golang基础学习笔记

      本文链接:https://www.haomeiwen.com/subject/ebpzpqtx.html