美文网首页
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