go语言-基础

Go程序基本结构

 // 定义包名,package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。
package main

 // 导入需要使用的包(的函数,或其他元素)
import "fmt"

// 程序的入口函数。main 函数是每一个可执行程序所必须包含的,一般来说都是在启动后第一个执行的函数。
func main() { 
  fmt.Println("Hello, World!")
}

数据类型:基本数据类型;高级数据类型
切片 make()
通道 channel()
接口interfance()

变量声明

  1. var value_name value_type; value_name = value
  2. var value_name = value
  3. var value_name := value

注意第三种声明方式 只能被用在函数体内,而不可以用于全局变量的声明与赋值; 且左侧的变量不应该是已经声明过的,否则会导致编译错误

** Go 基本命令**
 1. go build 命令主要是用于测试编译。在包的编译过程中,若有必要,会同时编译与之相关联的包。
 2.go get 命令主要是用来动态获取远程代码包的。
 3.go run 命令主要用于编译并运行Go程序。
 4.go test 命令,会自动读取源码目录下面名为*_test.go的文件,生成并运行测试用的可执行文件

什么是接口
1.方法声明的集合
2.任何类型的对象实现了在interface 接口中声明的全部方法,则表明该类型实现了该接口
3.interface 可以作为一种数据类型,实现了该接口的任何对象都可以给对应的接口类型变量赋值
类型
interface{} 类型没有声明任何一个方法,俗称空接口。interface{} 在我们需要存储任意类型的数值的时候相当有用,有点类似于C语言的void*类型。
协程
goroutine,
Golang 在 runtime、系统调用等多方面对 goroutine 调度进行了封装和处理,当遇到长时间执行或者进行系统调用时,会主动把当前 goroutine 的CPU § 转让出去,让其他 goroutine 能被调度并执行,也就是 Golang 从语言层面支持了协程。Golang 的一大特色就是从语言层面原生支持协程,在函数或者方法前面加 go关键字就可创建一个协程。

**channel管道**
Channel(管道) 可以被认为是协程之间通信的管道。与水流从管道的一端流向另一端一样,数据可以从信道的一端发送并在另一端接收。
声明: 使用内置函数make创建 a :=  make(chan int)
package main

import (
    "fmt"
    "time"
)

func Producer(queue chan<- int) {
    for i := 0; i < 10; i++ {
        queue <- i //写入
        fmt.Println("create :", i)
    }
}

func Consumer(queue <-chan int) {
    for i := 0; i < 10; i++ {
        v := <-queue  // 读出
        fmt.Println("receive:", v)
    }
}

func main() {
    queue := make(chan int, 88)
    go Producer(queue)
    go Consumer(queue)
    time.Sleep(1 * time.Second)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值