(三)go新手入门之数据类型简介

基础类型主要有整型、浮点数、复数、布尔型、字符串。与其他语言比较类似,这里不一一赘述。 复合类型有数组([N]T)、切片([]T)、字典(map)、结构体(struct)、通道(chan)、指针(*T)。

数组是一个由固定长度的特定类型元素组成的序列,一个数组可以由零个或多个元素组成。

var a [3]int //声明一个长度为3的整型数组
var q [3]int = [3]int{1, 2, 3} //数组的声明并初始化
q := [...]int{1, 2, 3} //另一种写法

切片(slice)代表变长的序列,序列中每个元素都有相同的类型,由三个部分构成:指针、长度和容量。slice就像一个没有固定长度的数组,它提供了访问数组子序列(或者全部)元素的功能,底层引用一个数组对象。它的零值等于nil。

var s []int    // len(s) == 0, s == nil
s = []int{}    // len(s) == 0, s != nil

要判断一个slice是否是空的,使用len(s) == 0来判断,而不应该用s == nil来判断。用内置的append函数向slice追加元素。

map是一个无序的key/value对的集合,可以写为map[K]V,K和V分别对应key和value,所有的key都有相同的类型,所有的value也有着相同的类型,key和value可以是不同的类型。key必须是支持==比较的数据类型,通过key是否相等来判断是否已经存在。不要用浮点数用做key的类型,可能出现的NaN和任何浮点数都不相等。内置的make函数可以创建一个map,内置的delete函数可以删除元素。注意其遍历的顺序是随机的,即每一次遍历的顺序都不相同。

m := make(map[string]int)

或直接声明并初始化

ages := map[string]int{
    "Tom": 30,
    "Jim": 40,
  }

判断是否存在某个Key

if age, ok := ages["Tom"]; ok {
    fmt.Println("已存在")
  } else {
   fmt.Println("不存在")
   }

结构体是一种聚合的数据类型,是由零个或多个任意类型的值组合而成,每个值称为结构体的成员。

type Point struct {
    X, Y int
  }
  type Circle struct {
    Center Point
    Radius int
  }

通道(chan)是go最核心的特色之一,一个channel有发送和接受两个主要操作。发送和接收两个操作都是用<-运算符。在发送语句中,<-运算符分割channel和要发送的值。在接收语句中,<-运算符写在channel对象之前。一定要初始化后才能进行读写操作,否则会永久阻塞。关于通道,后面我还会详细介绍,它和goroutine息息相关。

ch = make(chan int)    //无缓冲通道
ch = make(chan int,5) //有缓冲通道

- 阅读全文 -

(二)go新手入门之单元测试

每个语言都有单元测试,go同样也有一套自己的单元测试语法规范。下面我们来了解一下怎么编写一个单元测试用例。 首先,go文件命名规范,必须以“XXX_test.go”作为文件名,通常是我们即将测试的某个包下的某个库,取其文件名拼接下划线test。 其次,代码里的方法命名规范,必须以“TestXXX”作为方法名,即测试函数名必须以Test开头,并且方法有一个参数*testing.T类型的参数。 最后,单元测试的运行可以依赖开发工具,也可以在终端命令行下运行。以golang为例,在要运行的方法右键run “TestXXX”即可。而命令行,需要在代码对应的目录底下运行:

go test -v //(执行全部) 

或者

go test XXX_test.go //(执行指定文件) 

或者

go test -v -run="TestXXX" //(运行某个函数)

- 阅读全文 -

(一)go新手入门之环境搭建

新手刚入门,我认为有必要说一下如何搭建golang的环境。 首先,安装go二进制包或者通过源码自行编译二进制。这里假设go安装的目录为/usr/local/go。 其次,创建工作区以及相关目录。这里假设我们的工作目录为/home/user/go。 最后,设置环境变量。一般主要设置这几个环境变量:GOROOT、GOPATH、GOBIN、GO111MODULE,接下来,我们针对每个变量一一说明。

  1. GOROOT,指的是go二进制包的根目录,本例的值就是/usr/local/go。
  2. GOPATH,指的是我们上面说的工作目录,即/home/user/go。
  3. GOBIN,指的是我们编译安装go项目的的二进制的默认存放目录。
  4. GO111MODULE,该变量是从go.1.11启用的,表示是否启用go module功能,值为on表示开启,off表示关闭。

下面,我们以Linux系统配置为例,写一个demo如下:

 export GOROOT=/usr/local/go
  export GOPATH=/home/user/go
  export GOBIN=/home/user/go/bin
  export GO111MODULE=on
  export PATH=$PATH:$GOROOT/bin

- 阅读全文 -

最新文章

标签

链接