• go语言环境搭建


    1、windows环境搭建
      1、安装go
      2、安装goland开发工具包

    2、test.go

    /* 可执行文件,包名必须是main */
    package main
    /* fmt 字符串格式化的包 */
    import "fmt"
    
    /*main入口函数*/
    func main() {
    fmt.Printf("Hello, world" )
    
    }
    View Code

    3、go函数定义

    //go函数定义
    func add(a int ,b int) int {
    var sum int //var表示变量,sum变量名称,int表示变量类型
    sum = a+b
    return sum
    }
    View Code

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

        案例:(使用关键字go)

        func test_print(a int) {
          fmt.Println(a)
        }
        for i:=0;i<100;i++{
          go test_print(i)
        }

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

        /*make关键字,分配内存空间*/
        func main(){
          pipe:=make(chan int ,3) //定义一个pipe变量,管道容量为3,管道类似于队列
          pipe <- 1 //将1放入管道
          pipe <- 2
          fmt.Println("pipe长度:",len(pipe))
          var t1 int
          t1 =<- pipe //从管道取值放入变量t1中
          fmt.Println(t1)
        }

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

        func calc(a int ,b int ) (int ,int) {
          c:=a+b
          d:=(a+b)/2
          return c,d
        }

    5、包的概念(go语言不需要担心编码问题,都默认为utf8)

      1、和python一样,把相同的功能代码放在一个目录,称之为包
      2、包可以被其他包引用
      3、main包是用来生成执行文件,每个程序只有一个main包
      4、包的主要用途是提高代码的可复用性


    6、变量定义两种方式
      方式1:
        var sum int //var表示变量,sum变量名称,int表示变量类型
        sum = 0
      方式二:
        sum:=0

    7、函数多返回值   (注意占位符"_"使用)

    func calc(a int ,b int ) (int ,int)  {
        c:=a+b
        d:=(a+b)/2
        return c,d
    }
    
    func  main1()  {
        sum ,avg:=calc(200,300)
        fmt.Println("sum=",sum,",","avg=",avg)
        a ,_:=calc(200,300) //_表示不取返回值
        fmt.Println("sum=",a,)
    }


    FAQ:

    问题1:

    # command-line-arguments
    srclesson-one	est.go:36: undefined: test_goroute
    
    一个文件调用另一个文件的函数,必须两个文件都被编译为二进制文件,才能执行,否则报错
    为了解决这种问题,可以执行整个包
  • 相关阅读:
    每日总结3.8
    Go中定时器实现原理及源码解析
    Go语言实现布谷鸟过滤器
    详解Go语言调度循环源码实现
    Go语言中时间轮的实现
    详解Go语言I/O多路复用netpoller模型
    详解Go中内存分配源码实现
    Go中由WaitGroup引发对内存对齐思考
    【分享】java精品实战教程
    nginx实战教程
  • 原文地址:https://www.cnblogs.com/ywjfx/p/10366558.html
Copyright © 2020-2023  润新知