go语言的特性

1、golang语言特性python

 1. 垃圾回收linux

a、内存自动回收,不再须要开发人员管理内存  //开发代码中不能存在无引用的变量,否则代码出错golang

b、开发人员专一业务实现,下降了心智负担并发

c、只须要new分配内存,不须要释放函数

2. 自然并发ui

a、从语言层面支持并发,很是简单编码

b、goroute,轻量级线程,建立成千上万个goroute成为可能spa

c、基于CSP(Communicating Sequential Process)模型实现(基于goroute、channel)线程

并发实例:3d

不须要担忧编码问题,全是utf-8

:=  至关于变量的声明和赋值

在go名称中不建议使用下划线 _

//单行注释

/*   */多行注释

go  fmt -w filename   格式化代码文件(排版)

package main

import(
    "time"
    "fmt"
)

func test_goroute(a int) {
    fmt.Println(a)
}

func main() {

    for i := 0; i < 100; i++ {
        go test_goroute(i)
    }

    time.Sleep(time.Second)
}

 3. channel(管道,进程间的通讯)

a、管道,相似unix/linux中的pipe

b、多个goroute之间经过channel进行通讯

c、支持任何类型

func main() {
  pipe := make(chan int,3)  //make  分配内存空间
  pipe <- 1                 //向管道里面扔数值
  pipe <- 2 // len(pipe) 管道的长度
t1 =<- pipe //取管道里面的数据 
}

管道的传值:

main/main.go

package main

import(
    "go_dev/day1/goroute_example/goroute"
    "fmt"
)


func main() {
    var pipe chan int
    pipe = make(chan int, 1)
    go goroute.Add(100, 300, pipe)

    sum := <- pipe
    fmt.Println("sum=", sum)
}

goroute/add.go 

package goroute


func Add(a int, b int, c chan int) {

    sum := a +b
    c <- sum
}

4. 多返回值

  一个函数返回多个值

main/main.go

package main
import(
    "go_dev/day1/package_example/calc"  //调用其余包,路径根据GOPANTH不用写src,直接从src目录下开始
"fmt" ) func main() { sum,_ := calc.Add(100, 300) //接收返回值得一个,_没有值,打印报错 fmt.Println("sum=",sum) }

calc/Add.go

package calc
func Add(a int, b int) (int,int) { return a + b,a - b
}

2、包的概念

一、和python同样,把相同功能的代码放到一个目录,称之为包

二、包能够被其余包引用(包内的变量名必须是大写开头,才能被其余包调用)

三、main包是用来生成可执行文件,每一个程序只有一个main包

四、包的主要用途是提升代码的可复用性

 

3、包的编译

 创建以下目录结构:

将project添加到GOPATH的环境变量中

而后在PROJECT下编译代码:

go  build   godev/day1      //由于添加了GOPATH环境变量,能直接找到src文件,因此不用写src,直接编译包含main包的库就是了。

go build  -o  bin/day1.exe   godev/day1     // 将编译文件保存在PROJECT/bin下,并制定编译后的文件名

编译完成后,会生成day1.exe文件,.\day1.exe执行

相关文章
相关标签/搜索