• go语言入门


    我在这区别式C进行总结知识点

    1.增加数据类型

      字典map 

    package main
     
    import "fmt"
    
     func main() {
    testmap := make(map[string]int) //表示创建一个key为string,value的值为int的数据类型。
         testmap["dont"] = 24
         fmt.Println(testmap)
     }

      数组切片(类似于stl中的vector容器)

    package main
    
    import "fmt"
    
    func main() {
       var numbers []int  //声明一个数组
       printSlice(numbers)
       /* 允许追加空切片 */
       numbers = append(numbers, 0)
       printSlice(numbers)
    
       /* 向切片添加一个元素 */
       numbers = append(numbers, 1)
       printSlice(numbers)
    
       /* 同时添加多个元素 */
       numbers = append(numbers, 2,3,4)
       printSlice(numbers)
    
       /* 创建切片 numbers1 是之前切片的两倍容量*/
       numbers1 := make([]int, len(numbers), (cap(numbers))*2)
    
       /* 拷贝 numbers 的内容到 numbers1 */
       copy(numbers1,numbers)
       printSlice(numbers1) 
    }
    func printSlice(x []
    int){    fmt.Printf("len=%d cap=%d slice=%v ",len(x),cap(x),x) }

    2.函数多返回值的特性,对于忽略不关心的返回值可以使用“_”来占位填充。

    3.错误处理:

      defer():延迟调用,多个defer,依次入栈,在函数即将退出时,依次出栈调用

    package main
    import "fmt"
    func main() {
          defer func() {
              fmt.Println("defer one")   
          }()
          defer func() {
              fmt.Println("defer two")   
          }()
         defer func() {
             fmt.Println("defer three")  
         }()
     }

      panic():单独使用其后的代码不会执行;

          与defer结合使用,panic触发错误,defer依次出栈调用,没有recover捕获的情况下,最后才打印错误;

          与defer、recover结合使用,panic触发错误,defer依次出栈调用,直到被recover捕获,打印捕获的信息,之后继续defer出栈。

      recover():只有在defer中调用,才有效,否则返回nil

    4.并发编程

    启动goroutine模式,即启动协程,搭配channel(通道)联合使用

      goroutine是go语言中并发的执行单位。channel是go语言中各个goroutine之间的通信机制

    package main
    
    import "fmt"
    
    func main(){
          messages := make(chan string)
          go func(){messages <- "ping"}      
    }

    5.反射

      反射就是用来检测存储在接口变量内部(值value;类型concrete type) pair对的一种机制。

      基本功能:

        ①TypeOf:获取目标对象的类型,TypeOf:获取目标对象的值

        示例:

    package main
    
    import (
        "fmt"
        "reflect"
    )
    func main() {
        var num float64 = 1.2345
    
        fmt.Println("type: ", reflect.TypeOf(num))
        fmt.Println("value: ", reflect.ValueOf(num))
    }
    
    运行结果:
    type:  float64
    value:  1.2345

        ②获取接口信息

        ③设置实际变量的值

        ④进行方法的调用

    参考链接:https://studygolang.com/articles/12348?fr=sidebar

    6.对于常量的赋值是编译器行为,故右值不能出现任何需要运行期才能得出结果的表达式

    7.预定义变量“itoa:0”,默认值为0,每遇到一个const就被重置为0,进行下一次从0累加。

    8.循环方式:采用for、range

    9.内置函数make(类型,参数)——创建变量

    10函数命名规则:小写字母开头的函数只在本包内可见,大写字母开头的函数才能被其他包使用

  • 相关阅读:
    XMLHttpRequest 对象相关
    slideToggle()---单击隐藏/浮现--jQuery--click() 方法
    如何打开无线网卡开关(常见无线网卡开关样式)-----记一次令人脸红的羞耻操作
    之前写的页面导出Excel表格
    word 快捷键 部分
    windows 快捷键 部分
    推荐几款屏幕录制工具(可录制GIF)
    【myeclipse2014-2017】使用相关
    嵌套的JsonObject与JSONArray的取值---JSON中嵌套JSONArray
    图片素材库
  • 原文地址:https://www.cnblogs.com/single-dont/p/13307715.html
Copyright © 2020-2023  润新知