zoukankan      html  css  js  c++  java
  • Golang介绍以及安装

    Go语言

      Google开源
      编译形语言
      21世纪的C语言

    Go语言的特点
      简单易并发
      开发效率高
      执行性能好

    Go语言应用的领域
      服务端开发
        日志处理
        文件系统
        监控服务
      容器虚拟化
        Docker
        k8s
        Docker Swarm
      存储
        etcd
        Tidb
        Groupcache
      Web开发
        net/http
        Gin
        Echo
      区块链
        以太坊
        fabric


    开发环境
      官网地址:
        https://golang.google.cn/dl/
        选择对应版本 下载 安装
      (我这里是mac 所以使用brew下载)
        brew install go

      完成后使用 go env 查看版本


    配置go路径环境
      主要是GOROOT和GOPATH

      GOROOT:就是go的安装环境
      GOPATH:作为编译后二进制的存放目的地和import包时的搜索路径。其实说通俗点就是你的go项目工作目录。通常情况下GOPATH包含三个目录:bin、pkg、src。

      src目录下主要存放go的源文件

      pkg目录存放编译好的库文件,主要是*.a文件;

      bin目录主要存放可执行文件

      注意:千万不要把GOPATH设置成go的安装路径,可以自己在用户目录下创建一个目录,例如mygo

      一般安装好go之后,使用go env查看一下当前环境。此时显示出来的GOROOT就是你使用brew安装go的安装目录,这个路径要记下来。接下来要在bash_profile文件中进行配置。

     

    Golang /Go调试工具delve

      Windows or Linux
        go get github.com/derekparker/delve/cmd/dlv
      Mac使用brew下载
        brew install go-delve/delve/delve

         

    IDE下载 Goland
      http://www.jetbrains.com/go/

      下载后激活正常使用

     

     

    Go语言的项目结构
      -GOPATH
        -src //目录下主要存放go的源文件
          -网站域名/公司级别仓库域名
            - 作者/机构
              - 项目name
                - 模块a
                - 模块b
        -bin // 目录主要存放可执行文件
        -pkg //目录存放编译好的库文件,主要是*.a文件;

      编译: 只需要编辑主文件即可 不需要编译包
        cd /Project/pkg ## 在哪里编译 编译后的文件就在那里
        go build ../src/xxxx/xxx.go

        或指定编译后存放的地址

        go build -o Project/pkg/name src/xxx/xxx.go ## -o 参数指定编译后存放的位置 最后的/name 指的是编译后生成的文件name 也可以不指定

      *** 跨系统编译
        Mac下编译Linux和Windows平台64位可执行程序需要设置
          Linux
            CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build;
          Windows
            CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build;

        Linux下编译Mac和Windows平台64位可执行程序
          Mac
            CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build;
          Windows
            CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build;
        Windows下编译Mac和Linux平台64位可执行程序
          Mac
            SET CGO_ENABLED=0 // 禁用CGO
            SET GOOS=darwin // 目标平台设定
            SET GOARCH=amd64 // 64位系统
            go build
          Linux
            SET CGO_ENABLED=0
            SET GOOS=linux
            SET GOARCH=amd64
            go build

        编译并移动至bin目录
          go install

    Go代码结构

    package main //导包 main可执行文件 如果更换其他的name则不会执行 会生成一个.a文件供其他程序引入调用
    import(
    // go所有的功能都靠包的引入
    "fmt" // 输出输出模块 
    )
    func main(){ //主函数
      fmt.Println("hello word") // Println 输出至终端
    }
     

    运行

      IDE下
        右击Run
      终端下
        cd至创建文件路径下
          go run 文件name.go

    Go强语言类型

      创建函数传入参数以及返回值必须要指定类型例如
        # 补充 声明的变量如果不使用会被强制删除

    func add(a int, b int // 定义参数类型 ) int //定义返回值类型 { 
    var sum int // 定义变量类型
    sum = a + b
    return sum // 返回值
    }

    语言特性

      1.垃圾回收
        a.内存自动回收,再也不需要开发人员管理内存
        b.开发人员专注业务时间,降低了心智负担
        c.只需要new分配内存,不需要释放
      2.天然并发
        a.从语言层面支持并发,非常简单
        b.goroute,轻量级线程,创建成千上万个goroute成为可能
        c.基于CSP(Commuicating Sequential Process)模型实现

    func main(){
      go fmt.Println("hello")
    }

      3.channel
        a.管道,类似unix/linux中的pipe
        b.多个goroute之间通过channel进行通讯
        c.支持任何类型

    func main(){
        pip3:=make(chan int,3) // make开辟空间 长度为3 且只能存int类型
        pipe <- 1
        pipe <- 2
    }

      4.多返回值
        a.一个函数返回多个值

    func calc(a int,b int)(int,int){ //(int,int) 定义返回值
        sum:= a+ b
        avg:= (a+b)/2
        return sum,avg
    }

      补充: 解包到不需要的参数 使用 "_"接受则为省略
        res,_ = calc(1,3)
        res = 4

      

     

     

    Songzhibin
  • 相关阅读:
    78. Subsets java solutions
    77. Combinations java solutions
    236. Lowest Common Ancestor of a Binary Tree java solutions
    86. Partition List java solutions
    39. Combination Sum java solutions
    129. Sum Root to Leaf Numbers java solutions
    杭电1004
    杭电1003
    杭电1002
    杭电1001
  • 原文地址:https://www.cnblogs.com/binHome/p/11862804.html
Copyright © 2011-2022 走看看