go linux 学习记录

1  yum install mercurial  安装mercurial包

2  yum install git  安装git包

3  yum install gcc  安装gcc

4   然后就可以下载golang的压缩包了  下载地址http://golangtc.com/download  选择正确版本 注意32位和64位  我下的是go1.2.linux-amd64.tar.gz

5  tar -zxvf go1.2.linux-amd64.tar.gz  解压该包  我的放在/var下 解压后会生成一个go的文件夹

6  修改环境变量  vi /etc/profile

    export GOROOT=/var/go

    export PATH=$GOROOT/bin:$PATH

    export GOPATH=/var/gopkg

    GOPATH和GOROOT修改为你的路径即可

7  刷新环境变量  source /etc/profile

8  进入go/test/  执行go run helloworld.go  

9  切换用户后也需要执行source /etc/profile 刷新环境变量 才可执行go run helloworld.go;

vi /etc/profile  为环境变量配置
export GOPATH=/var/www/gogogo/test  设置临时环境变量
 

摘自:http://jingyan.baidu.com/article/90895e0ffb4f1764ec6b0baa.html 

二次yum install 安装

现在系统为centos 7.2 

yum install go

执行安装

查看了 /etc/profile 环境变量文件 未发现有关于go 的环境配置

find / -name golang

发现

/usr/lib/golang

 

修改环境变量文件

export GOROOT=/usr/lib/golang(golang的安装目录)

 

export PATH=$GOROOT/bin:$PATH

 

export GOPATH=/var/www/gogogo/BeegoTest(我一个项目的目录)

保存退出

刷新环境变量

source /etc/profile   (我觉得这个就是在此导入profile到系统中的概念,和msyql 的source 差不多区别)

然后进去我的项目src中 go run main.go

执行了我的项目,即可。

继续研究export GOPATH

2016-12-09

os 包:

  os 包以跨平台的方式,提供一些与操作系统交互的函数和变量。

    os.Args变量是一个字符串的切片(slice) ,类似于数组,s[i]:访问s中的单个元素,s[n,m]:获取n至m的参数,不包括第m个。使用该包需要在前面import()中加入"os",以引入。

  for 循环几种形式。go语言中只有for 循环一种循环方式

    for condition {  //当condition 为true 时 执行 do

      do...

    }

    for {  死循环

      do ....

    }

    for _, arg := range os.Args[i:] {  //遍历 传给_,arg 然后do ,range 会产生两个数值,索引和值,前面必须要有两个变量来接受,否则错误,_,表示空标识符,程序自动会丢弃掉。

      do

    }

  map 类似于数组,存储了键/值(key/value)的集合,

  array:由key=>value 格式;官方=》array 由[n]<type> 定义, n 标示array 的长度,而<type> 标示希望存储的内容的类型。对array 的元素赋值或索引是由方括号完成的:

    标准定义声明使用格式:

      var arr = [10]int    //有固定大小

      arr[0] = 1        //赋值

      arr[1] = 2        //赋值

      简写:a := [10]int{1,2}//定义一个长度为10的数组

        a = [...]int{1,2,3,4,5}//数组会自动计算后面元素个数来设置长度

      二维数组:

        a := [2][2]int{[2]int{1,2},[2]int{3,4}} =》  a := [2][2]int{ [...]int{1,2}, [...]int{3,4} } 

        测试得知:二维数组中二级数组是需要制定长度的。 

            

      固定长度后没有定义的值都为0

string  

  内建函数
    close  new  panic  complex  delete  make  recover  real  len  append  print  imag  cap  copy  println
    close 用于channel 通讯。使用它来关闭channel,参阅第7 章了解更多。
    delete 用于在map 中删除实例。
    len 和cap 可用于不同的类型, len 用于返回字符串、slice 和数组的长度。参  
    阅“array、slices 和map” 小节了解更多关于slice、数组和函数cap 的详细信息。
    new 用于各种类型的内存分配。参阅“用new 分配内存” 的第59 页。
    make 用于内建类型(map、slice 和channel)的内存分配。参阅“用make 分配
    内存” 的第59 页。
    copy 用于复制slice。参阅本章的“slice”。
    append 用于追加slice。参阅本章的“slice”。
    panic 和recover 用于异常处理机制。参阅“恐慌(Panic)和恢复(Recover)”

常用包

  

标准的 Go 代码库中包含了大量的包,并且在安装 Go 的时候多数会伴随一起安 装。浏览 $GOROOT/src/pkg 目录并且查看那些包会非常有启发。无法对每个包就 加以解说,不过下面的这些值得讨论: a

fmt
包 fmt 实现了格式化的 I/O 函数,这与 C 的 printf 和 scanf 类似。格式化短 语派生于 C 。一些短语(%-序列)这样使用:

%v

默认格式的值。当打印结构时,加号(%+v)会增加字段名; %#v

Go 样式的值表达; %T

带有类型的 Go 样式的值表达; a描述来自包的go doc。额外的解释用斜体。

这个包提供了原始的 I/O 操作界面。它主要的任务是对 os 包这样的原始 的 I/O 进行封装,增加一些其他相关,使其具有抽象功能用在公共的接口 上。

这个包实现了缓冲的 I/O。它封装于 io.Reader 和 io.Writer 对象,创建了另 一个对象(Reader 和 Writer)在提供缓冲的同时实现了一些文本 I/O 的功 能。

常用的包

53

io

bufio

sort
sort 包提供了对数组和用户定义集合的原始的排序功能。

strconv
strconv 包提供了将字符串转换成基本数据类型,或者从基本数据类型转 换为字符串的功能。

os
os 包提供了与平台无关的操作系统功能接口。其设计是 Unix 形式的。

sync
sync 包提供了基本的同步原语,例如互斥锁。

flag
flag 包实现了命令行解析。 参阅 “命令行参数” 在第 91 页。

encoding/json
encoding/json 包实现了编码与解码 RFC 4627 [5] 定义的 JSON 对象。

text/template

数据驱动的模板,用于生成文本输出,例如 HTML。

将模板关联到某个数据结构上进行解析。模板内容指向数据结构的元素 (通常结构的字段或者 map 的键)控制解析并且决定某个值会被显示。模

板扫描结构以便解析,而 “游标” @ 决定了当前位置在结构中的值。

net/http
net/http 实现了 HTTP 请求、响应和 URL 的解析,并且提供了可扩展的 HTTP 服务和基本的 HTTP 客户端。

unsafe
unsafe 包包含了 Go 程序中数据类型上所有不安全的操作。 通常无须使用 这个。

reflect
reflect 包实现了运行时反射,允许程序通过抽象类型操作对象。通常用于 处理静态类型 interface{} 的值,并且通过 Typeof 解析出其动态类型信息, 通常会返回一个有接口类型 Type 的对象。

参阅 6,第 “自省和反射” 节。

os/exec
os/exec 包执行外部命令。 

原文地址:https://www.cnblogs.com/jackylee92/p/5943123.html