• go学习中的零散笔记


    1. 在go语法中,双引号是常用的来表达字符串,如果你使用了单引号,编译器会提示出错

    2.c中的指针     *在不同的场景下有不同的作用:*可以用在指针变量的定义中,表明这是一个指针变量,以和普通变量区分开;使用指针变量时在前面加*表示获取指针指向的数据,或者说表示的是指针指向的数据本身

    3. *操作符作为右值时,意义是取指针的值,作为左值时,也就是放在赋值操作符的左边时,表示 a 指针指向的变量。其实归纳起来,*操作符的根本意义就是操作指针指向的变量。当操作在右值时,就是取指向变量的值,当操作在左值时,就是将值设置给指向的变量。

    4.:=这个符号直接取代了vartype,这种形式叫做简短声明。不过它有一个限制,那就是它只能用在函数内部;在函数外部使用则会无法编译通过,所以一般用var方式来定义全局变量

    5.Go对于已声明但未使用的变量会在编译阶段报错

    6.如果要声明一个多行的字符串怎么办?可以通过`来声明:

    m := `hello
    	world`

    ` 括起的字符串为Raw字符串,即字符串在代码中的形式就是打印时的形式,它没有字符转义,换行也将原样输出。例如本例中会输出:

    hello
    	world

    7.
    • 大写字母开头的变量是可导出的,也就是其它包可以读取的,是公有变量;小写字母开头的就是不可导出的,是私有变量。
    • 大写字母开头的函数也是一样,相当于class中的带public关键词的公有函数;小写字母开头的就是有private关键词的私有函数。

    8. go中的new和make https://blog.csdn.net/u010412301/article/details/84670062?utm_medium=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-baidujs-1.nonecase

    9.go的切片:https://blog.csdn.net/ahilll/article/details/84624120

    10.  important tips

    1. 函数外的每个语句都必须以关键字开始(var、const、func等)
    2. :=不能使用在函数外。
    3. _多用于占位,表示忽略值。

     11. 切片之间是不能比较的,我们不能使用==操作符来判断两个切片是否含有全部相等元素。 切片唯一合法的比较操作是和nil比较。 一个nil值的切片并没有底层数组,一个nil值的切片的长度和容量都是0。但是我们不能说一个长度和容量都是0的切片一定是nil,例如下面的示例

    1
    2
    3
    var s1 []int         //len(s1)=0;cap(s1)=0;s1==nil
    s2 := []int{}        //len(s2)=0;cap(s2)=0;s2!=nil
    s3 := make([]int, 0) //len(s3)=0;cap(s3)=0;s3!=nil

    所以要判断一个切片是否是空的,要是用len(s) == 0来判断,不应该使用s == nil来判断。

    12.   fmt.Sprintf    https://www.cnblogs.com/jcjc/p/12290915.html

    13.  关于闭包  https://segmentfault.com/a/1190000022798222

    14. go  goroutine   https://segmentfault.com/a/1190000018150987

    15. go 异常处理- https://zhuanlan.zhihu.com/p/144348942

    16.  空接口的作用:   1)空接口作为函数的参数

        使用空接口实现可以接收任意类型的函数参数。

      // 空接口作为函数参数

    func show(a interface{}) {
        fmt.Printf("type:%T value:%v
    ", a, a)
    }
    

       2)空接口作为map的值

        使用空接口实现可以保存任意值的字典。

      // 空接口作为map值
        var studentInfo = make(map[string]interface{})
        studentInfo["name"] = "李白"
        studentInfo["age"] = 18
        studentInfo["married"] = false
        fmt.Println(studentInfo)

    17. go异常捕捉 https://wumansgy.github.io/2018/09/04/go%E8%AF%AD%E8%A8%80%E9%94%99%E8%AF%AF%E6%8D%95%E8%8E%B7%E5%92%8Cpanic%E5%BC%82%E5%B8%B8/
    虽千万人吾往矣...
  • 相关阅读:
    多线程中sleep方法,简单介绍。
    线程终止的四种方式,interrupt 方法使用的简单介绍。
    线程的生命周期 介绍
    线程池之 newSingleThreadExecutor 介绍
    python 中 *args he **kwargs的区别
    转载:创业者和工作谈的是一场永不分手的虐恋
    给自己一份勇气,勇敢的面对生活
    做一面锃亮的镜子吧
    与人交往时关注内容而不是表情
    最近比较需要正能量:经典励志人生感悟的句子
  • 原文地址:https://www.cnblogs.com/rainisraining/p/14953018.html
Copyright © 2020-2023  润新知