evsqiezi

攻城师 349383985

go语言
一 搭建环境
去官网(https://golang.org/dl/,墙内地址:https://golangtc.com/download)下载源码。
1、下载源码包:go1.9.linux-amd64.tar.gz。(1.4调mysql有问题)
2、将下载的源码包解压至 /usr/local目录。
tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz

vi /etc/profile
export GOROOT=/usr/local/go  #设置为go安装的路径
export GOPATH=$HOME/gocode   #默认安装包的路径
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin
source /etc/profile 

查看版本号。

go version

liteide搭建

下载liteide,地址:https://www.golangtc.com/download/liteide(境外下载地址:https://github.com/visualfc/liteide/releases/tag/x33.3),如: liteidex32.1.linux64-qt4-system.tar.bz2

tar jxvf   liteidex32.1.linux64-qt4-system.tar.bz2
进入到解压后的目录
/home/xxx/Desktop/liteide/bin 

安装qt   yum install   qt

直接运行liteide

qt4装上还是不能用

可能是qt4跟lite工具不匹配。

修改字体

“查看”-》“选项”,可以改liteOutput,liteEditor的字体。


二 安装测试
创建工作目录 C:\>Go_WorkSpace。
文件名: test.go,代码如下:
package main
import "fmt"
func main() {
   fmt.Println("Hello, World!")
}
使用 go 命令执行以上代码输出结果如下:
C:\Go_WorkSpace>go run test.go

Hello, World!

sleep

package main

import (
    "fmt"
    "os/exec"
    "time"
)
 
func main() {
    time.Sleep(15 * time.Second)

}

        //start ffmpeg cmd
        t := time.Now()
        tstart := t.Unix()
        //do something
        t = time.Now()
        tend := t.Unix()

        costtime := tend - tstart

       //得到效率

       rate := float64(costtime) * 1000 / float64(totalSec)
       fmt.Println("costtime:", costtime, "rate:", rate)
       transinfo += fmt.Sprintf("<rate>%.2fX</rate>", rate)

// 打印当前时间

package main

import (
    "fmt"
    "time"
)

func main() {
    fmt.Println(time.Now().Format("2006-01-02 15:04:05"))
}
#函数

package main

import "fmt"

func swap(x, y string) (string, string) {
   return y, x
}

func main() {
   a, b := swap("Mahesh", "Kumar")
   fmt.Println(a, b)
}

执行结果为:Kumar Mahesh

#执行shell脚本

package main

import (
  "bytes"
  "fmt"
  "log"
  "os/exec"
)

func exec_shell(s string) {
    cmd := exec.Command("/bin/bash", "-c", s)
    var out bytes.Buffer

    cmd.Stdout = &out
    err := cmd.Run()
    if err != nil {
        log.Fatal(err)
    }
    fmt.Printf("%s", out.String())
}

func main() {
    exec_shell("uname ")

}

最简单的方法:

cmd := exec.Command("/bin/sh/", "-c", "linux命令")

或复杂的, 各个参数都要单独写

cmd := exec.Command("ls", "-l", "-a")

Start执行不会等待命令完成就,Run会阻塞等待命令完成。

    //lsCmd := exec.Command("bash", "-c", "/home/shell/modifyhls.sh    /data/channellist/channel03/index.m3u8 10 a a   & ")


关键字:

defer是golang语言中的关键字,用于资源的释放,会在函数返回之前进行调用。

一般采用如下模式:

f,err := os.Open(filename)
if err != nil {
  panic(err)
}
defer f.Close()

如果有多个defer表达式,调用顺序类似于栈,越后面的defer表达式越先被调用。

package

// File: main.go
package main
import "fmt"
func learn() {
    fmt.Println("I am learning.")
}

func main() {
    fmt.Println("----main start ----")
    learn()
    eat()
    fmt.Println("----main end ----")
}

// File: eat.go
package main
import "fmt"
func eat() {
    fmt.Println("I am eating.")
}
在命令行编译一下,然后执行
$ go build . # 会在当前目录生成名为`go`的执行文件
$ ./go
结果输出
----main start ----
I am learning.
I am eating.
----main end ----

初始化

    Go里面有两个保留的函数:init函数(能够应用于所有的package)和main函数(只能应用于package main)。这两个函数在定义时不能有任何的参数和返回值。虽然一个package里面可以写任意多个init函数,但这无论是对于可读性还是以后的可维护性来说,我们都强烈建议用户在一个package中每个文件只写一个init函数。

       Go程序会自动调用init()main(),所以你不需要在任何地方调用这两个函数。每个package中的init函数都是可选的,但package main就必须包含一个main函数。

    程序的初始化和执行都起始于main包。如果main包还导入了其它的包,那么就会在编译时将它们依次导入。有时一个包会被多个包同时导入,那么它只会被导入一次(例如很多包可能都会用到fmt包,但它只会被导入一次,因为没有必要导入多次)。当一个包被导入时,如果该包还导入了其它的包,那么会先将其它包导入进来,然后再对这些包中的包级常量和变量进行初始化,接着执行init函数(如果有的话),依次类推。等所有被导入的包都加载完毕了,就会开始对main包中的包级常量和变量进行初始化,然后执行main包中的init函数(如果存在的话),最后执行main函数。下图详细地解释了整个执行过程:


阅读更多
个人分类: golang
想对作者说点什么? 我来说一句

go语言学习笔记

2018年03月06日 897KB 下载

Go语言编程

2018年01月31日 10.69MB 下载

Go 语言标准库

2018年04月09日 1.72MB 下载

Go语言编程_许式伟_完整版_.pdf )

2017年10月12日 9.74MB 下载

effective go(英文版)

2018年02月09日 390KB 下载

Go语言64位安装包

2018年01月14日 88.53MB 下载

学习GO语言【packet】

2017年09月12日 4.62MB 下载

go语言链接爬虫

2018年05月11日 5.98MB 下载

Go语言编程.pdf

2017年11月23日 8.83MB 下载

go for windows

2012年09月24日 24.35MB 下载

没有更多推荐了,返回首页

不良信息举报

go语言

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭