zoukankan      html  css  js  c++  java
  • Go笔记

    进程同步与异步:

      function 

      系统资源:内存,CPU,硬盘,显卡

    阻塞与非阻塞

    M G P

    GO并发模型

    内存泄漏

    Path 

    GOPATH //go工作文件目录,可以设置多个 go get,下载第三方模块,默认是第一个工作目录中的src文件夹中

    四个文件夹bin gocs pkg src

    GOPATH 中的bin也要加到Path环境变量中

    GOROOT //go安装根目录,里面有bin安装到path环境变量中

    go version能起作用,是因为path中存在go/bin,go version先在path中寻找,在path路径中找到go 然后匹配到go/bin

    包名最好与文件名一致,

    go run main.go //临时执行

    go build main.go //生成可执行文件,并放在当前目录

    go install  //生成可执行文件,并放到bin目录下

    接着go install 命令 ./src

    交叉编译

    GOOS=windows GOARCH=amd64 go build //两个重要参数,系统版本,机器版本

    数组,长度固定,

    在全局变量中定义变量只能用var,在函数体中能用:=

    slice 长度不固定

    arr长度固定

    数组和结构体是值类型,切片slice和map是引用类型

    go语言所有变量都已经初始化

    例:var arr [2]int // array{0,0}

     var chanA chan bool //chan类型

    判断为空nil

    happen before

    管道方式解决

    defer

    //会使函数最终会执行,即close()肯定会关闭

    //类比try catch

    //func add(a,b int) (result int, err error){

    }

    //defer相当于栈,defer里面的函数会逆序执行

    interface

    //不需要实例化,可以直接赋值 

    //var a intaface{}

    struct(

    package main
    
    import "fmt"
    
    type Vertex struct {
    	X int
    	Y int
    }
    
    func main() {
    	v := Vertex{1, 2} //结构体的实例化以及初始化
    	v.X = 4    //对结构体中元素赋值
    	fmt.Println(v.X)
        
    	p := &v //指针引用
    	p.X = 1e9
    

      

     
      
    

      

    slice map

    channel以及channel使用场景

    函数大写开头,其他包可以调用,如果小写,则其他包不可调用

    循环迭代,range

    for _,value := range array { //_ 意思是丢弃不用

     for ... range的坑,for range创建了每个元素的副本,而不是直接返回每个元素的引用,如果使用该值变量的地址作为指向每个元素的指针,就会导致错误,在迭代时,返回的变量是一个迭代过程中根据切片依次赋值的新变量,所以值的地址总是相同的

    import _ "github.com/a/a“

    slice 作为参数最好用返回值返回

    func main() {
        slice := []int{0, 1, 2, 3}
        myMap := make(map[int]*int)
     
        for index, value := range slice {
            num := value
            myMap[index] = &num
        }
        fmt.Println("=====new map=====")
        prtMap(myMap)
    }
     
    func prtMap(myMap map[int]*int) {
        for key, value := range myMap {
            fmt.Printf("map[%v]=%v
    ", key, *value) //注意调用是用*
        }
    }

    }

    项目文件夹里创建vander

    go get -u github.com/...

    服务自发性consul

    Go语言查看变量的类型: fmt.Println(reflect.TypeOf(v))

    golang 使用 iota

    自增长常量经常包含一个自定义枚举类型,允许你依靠编译器完成自增设置。

    type Stereotype int

    const ( 
        TypicalNoob Stereotype = iota // 0 
        TypicalHipster                // 1 
        TypicalUnixWizard             // 2 
        TypicalStartupFounder         // 3 
    )

    即TypicalStartupFounder的值就是为3,可以直接调用

    fmt.Println(TypicalStartupFounder) //3

    可跳过的值

    type AudioOutput int   //注意最上面要给个初始值

    const ( 
        OutMute AudioOutput = iota // 0 
        OutMono                    // 1 
        OutStereo                  // 2 
        _ 
        _ 
        OutSurround                // 5 
    )

    const (
        Apple, Banana = iota + 1, iota + 2
        Cherimoya, Durian
        Elderberry, Fig
    )

    // Apple: 1 
    // Banana: 2 
    // Cherimoya: 2 
    // Durian: 3 
    // Elderberry: 3 
    // Fig: 4

    const ( 
        i = iota 
        j = 3.14 
        k = iota 
        l 
    )

    那么打印出来的结果是 i=0,j=3.14,k=2,l=3


    Go for range语句
    for key, value range obj {
      .....
    }

    将数组类型的interface转为str
    ops := d.job.JobParams["host_name"]
    des := fmt.Sprintf("%v", ops)
    return des

    服务器响应数字类型
    1XX 提示信息 - 表示请求已被成功接收,继续处理
    2XX 成功 - 表示请求已被成功接收,理解,接受
    3XX 重定向 - 要完成请求必须进行更进一步的处理
    4XX 客户端错误 - 请求有语法错误或请求无法实现
    5XX 服务器端错误 - 服务器未能实现合法的请求

    golang截取字符串

    str := "XBodyContentX"
      content := str[1 : len(str)-1]
      fmt.Println(content)

    Go切片:


    接口interface: 一组方法的集合,不需要实现这些方法,接口中不能有任何变量,默认类型是一个指针,

    打印类型: %T

    定义结构体如果是指针类型的方法,可以这样初始化

    bwm := &BWM{

      name := "baoma"

    }

    panic会导致程序直接结束,一般只有在读取配置文件初始化时才会用到panic,即在init()中读取配置文件信息失败,会调用一下panic,其他情况下不能调用panic。



  • 相关阅读:
    Office365常用的命令(持续更新中)
    7:OracleRAC安装配置(19C)
    5:安装配置 Oracle18C
    课程7:邮箱的备份恢复
    课程6: powershell运维
    Exchange2013之HTTP重定向
    Powershell运维:导出Exchange系统里面所有用户的邮箱
    灾难恢复:恢复已经删除的邮箱(AD账号也被删除,14天内)
    灾难恢复:恢复丢失的exchange服务器
    2:Oracle体系结构(物理结构)
  • 原文地址:https://www.cnblogs.com/letwant/p/8876831.html
Copyright © 2011-2022 走看看