文章目录

  • 1. Go 语言编写测试代码
  • 2. Go 的变量
  • 3. Go 常量定义

1. Go 语言编写测试代码

  • 源码文件以 _test结尾: xxx_test.go
  • 测试方法名需以Test开头: func TESTXXX(t *testing.T) {..} ,且参数列表直接用go 默认的test参数即可

如下first_test.go 代码:

package try_testimport "testing"func TestFirstTry(t *testing.T) { // 套go test的模版t.Log("My first test try") // 在test中打印数据
}

go test first_test.go 普通方式运行
go test -v first_test.go 打印Log函数的输出

2. Go 的变量

Go语言中的变量与其他编程语言的差异主要如下:

  • 赋值可以进行自动类型判断
  • 一个赋值语句中可以对多个变量进行同时赋值

查看如下 计算斐波那契数列 的 go 代码

package fib_testimport ("testing"
)func TestFib(t *testing.T) {/*** 普通的变量初始化方式如下** var a int = 1 ** var b int = 1*/// 也可以集中到一块进行初始化var (a int = 1b int = 1)/*** 利用Go语言的自动类型推断** a := 1** b := 1*/t.Log(a)for i :=0; i< 5; i++{t.Log(" ", b)tmp := aa = bb = tmp + a}t.Log(b)
}func TestExchange(t *testing.T) {a := 1b := 2// 交换 a,b的值t.Log(a, " ",b)tmp := aa = bb = tmpt.Log(a, " ",b)/*** go 语言支持对多个变量同时赋值** 如下代码和两个变量交换的结果完全一致*///a,b = b,a//t.Log(a, " ",b)
}

其中变量的赋值可以有很多种形式,尤其是a := 1是go 相比于其他编译型语言特有的变量类型推断
同时a, b = b, a这样的多个变量同时赋值也是比较独特。

运行如上测试代码如下:

▶ go test -v fib_test.go
=== RUN   TestFibfib_test.go:21: 1   1fib_test.go:24: 1fib_test.go:26:   1fib_test.go:26:   2fib_test.go:26:   3fib_test.go:26:   5fib_test.go:26:   8fib_test.go:31: 13
--- PASS: TestFib (0.00s)
=== RUN   TestExchangefib_test.go:39: 1   2fib_test.go:43: 2   1
--- PASS: TestExchange (0.00s)
PASS
ok      command-line-arguments  0.779s

3. Go 常量定义

与其他编程语言的主要差异 是:快速设置连续的值

/*
** 设置递增+1
** 比如Monday是1
** 则其他 Tue = 2, Wed =3 ...
*/
const ( // 关键字,声明常量类型Monday = iota + 1TueWedThursFriSatSun
)/*
** 对bit 位二进制 常量进行连续初始化
**
** Open 表示类似 001
** Close 则依次 010
** Running 表示 100
*/
const (Open = 1 << iotaClose Running
)

编写简单测试代码进行验证:

package fib_testimport ("testing"
)func TestConst(t *testing.T) {const (Mon = iota + 1TueWed)t.Log(Mon," ", Tue, " ", Wed)const (First = 1 << iotaSecondThird)t.Log(First," ", Second, " ",Third)
}

输出如下:

=== RUN   TestConstfib_test.go:59: 1   2   3fib_test.go:66: 1   2   4
--- PASS: TestConst (0.00s)
PASS

当然,以上常量赋值主要是针对数值是连续的,如果不连续,则还是按照传统的方式一个一个进行赋值。

const (a = 1b = 12
)

Go: 分布式学习利器(2)-- Go中的变量,常量 以及与其他语言变量之间的差异相关推荐

  1. Go 分布式学习利器(8)-- Go的函数

    文章目录 1. Go语言的函数语法 2. Go 函数中的可变长参数 3. Go函数中的延迟函数 deffer 1. Go语言的函数语法 先介绍一下Go语言的函数和其他语言 函数之间的差异,其中有一些已 ...

  2. Go 分布式学习利器(16) -- go中可复用的package构建

    通过本文,你将了解go 语言中如何将自己的package构建到项目中 以及如何将远程(github)的package构建到项目中. 1. 构建本地的package package 是可复用模块的基本单 ...

  3. 浅谈分布式学习(SGD)中提高速率的方法

    背景: 在分布式学习中,如下图所示,将深度学习中的梯度计算任务分成n份,交给n个从机进行计算,再将计算后的梯度返还到主机,用于模型的更新,这样计算的速度相比于单个主机进行计算,速率得到大大提升.尤其是 ...

  4. Go 分布式学习利器(11)-- Go语言通过单链表 实现队列

    一个小实验,将之前学习的Go相关的语法做个总结. 包括: Go语言接口特性 Go语言封装特性 Go语言 变量,指针,函数 语法 GO语言 条件和循环语句 的语法 GO语言的测试程序 通过链表实现一个队 ...

  5. Go 分布式学习利器(20)-- Go并发编程之多路选择和超时控制,channel的关闭和广播

    Select 多路选择 基本使用语法如下: select {case ret := <-retCh1: //阻塞事件,等待channel1的消息t.Logf("result %s \n ...

  6. Go 分布式学习利器(10)-- Go语言的接口

    文章目录 1. 接口与依赖 2. 自定义类型 1. 接口与依赖 在上一节中我们讨论Go语言的面向对象特性的时候也说了,Go语言并不支持继承,能够进行对象的封装(包括数据成员和成员函数的封装),那么这里 ...

  7. Go:分布式学习利器(1) -- 开发环境搭建 + 运行第一个go程序

    文章目录 为什么要学习 go 开发环境搭建 -- MAC 运行第一个go程序 go 函数的返回值设置 go 函数的命令行参数 为什么要学习 go 在如下几个应用场景的需求下产生了go: 超大规模分布式 ...

  8. Go 分布式学习利器(19)-- Go并发编程 之 CSP(communicating sequential processes) 机制

    文章目录 前言 CSP 特点 CSP代码 演示 1. 正常流程的代码 2. CSP 未设置buffer 代码 3. 设置指定大小的channel buffer 总结 前言 CSP 这个名词大家会比较陌 ...

  9. Go 分布式学习利器(18)-- Go并发编程之lock+WaitGroup实现线程安全

    Go语言中通过Groutine 启动一个Go协程,不同协程之间是并发执行的,就像C++/Java中线程之间线程安全是一个常见的问题. 如下Go 语言代码: func TestConcurrent(t ...

最新文章

  1. 机器学习(15)精确率召回率F1-score(查看癌症预测结果的精确率、召回率)
  2. 数学各个研究方向简介
  3. jpa关联映射(一)
  4. java佳沃维洛奇,新品速递:JAVA 双雄耀世登场
  5. linux找不到动态链接库 .so文件的解决方法(转自:http://www.cnblogs.com/xudong-bupt/p/3698294.html)
  6. git did not exit cleanly(解决办法)
  7. 双端队列 BFS + Chamber of Secrets CodeForces - 173B
  8. HDU1466 计算直线的交点数
  9. Linux初级运维(一)——Linux操作系统及常用命令
  10. 家用计算机的辐射,计算机辐射有多大?
  11. Python多进程实现原理
  12. HTTP和HTTPS的区别以及计算机网络常见面试题总结
  13. matlab dlt标定,实验三 Matlab图像处理基本操作及摄像机标定(DLT)
  14. 简单代码变出超个性化的QQ昵称
  15. 善于做“加减法”的百分点科技 成就数据智能的先行者
  16. Windows7 SP1 OEM 简体中文旗舰版
  17. el-form 表单的校验
  18. x86架构鼻祖-i8086
  19. RGB接口和MPU接口区别
  20. C语言将一个十进制数转化为二进制

热门文章

  1. 设计模式之装饰模式(Java实现)
  2. C++中的explicitkeyword
  3. 《OpenCV3编程入门》学习笔记2 启程前的认知准备
  4. PyTorch加载模型model.load_state_dict()问题,Unexpected key(s) in state_dict: “module.features..,Expected .
  5. java实现fread_fread函数读取到的数据和实际数据不一样
  6. 如何在html中选择wrap,使用jQuery中的wrap()函数操作HTML元素的教程
  7. Android 10 vivo,更快更安全,vivo产品经理宣布:iQOO将首批适配Android 10正式版
  8. Python的神奇功能——函数装饰器MetaClass
  9. Ubuntu18.04:错误整理
  10. 力扣(LeetCode)刷题,简单题(第24期)