[go学习笔记]二、变量、常量

wenjianzhang · · 448 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

示例代码请访问:[https://github.com/wenjianzhang](https://github.com/wenjianzhang) ## 编写测试程序 1. 源码文件以_test结尾;例如:xxx_test.go 1. 测试方法名以Test开头;例如:func TestXXXXX(t *testing.T){} ## 实现斐波那且数列 ```go package fib import ( "fmt" "testing" ) func TestFibList(t *testing.T) { // 第一种赋值方式 //var a int =1 //var b int =1 // 第二种赋值方式 //var ( // a int = 1 // b = 1 //) // 第三种赋值方式 a := 1 b := 1 fmt.Print(a) for i := 0; i < 5; i++ { fmt.Print(" ", b) tmp := a a = b b = tmp + a } fmt.Println() } ``` 代码里边给出了三种赋值方式: > one ```go var a int =1 一般全局变量,或者外部变量 ``` > two ```go var ( a int = 1 b = 1 ) ``` > three go语言可以不使用关键字,使用类型推断直接给变量设置类型 ```go a := 1 ``` ## 变量赋值 * 赋值可以进行自动类型推断 * 在一个赋值语句中可以对多个变量进行同时赋值 ```go func TestExchang(t *testing.T) { a := 1 b := 1 // 1 常见写法 //tmp := a //a = b //b = tmp // // 2 go 特性:多个变量进行同时赋值 a, b = b, a t.Log(a, b) } ``` 两点需要注意 1. 常见写法 ```go tmp := a a = b b = tmp ``` 2. go 特性:多个变量进行同时赋值 ```go a, b = b, a ``` ## 常量定义 快速设置连续值 ```go const ( Monday = iota + 1 Tuesday Wednesday Thursday Friday Saturday Sunday ) const ( Open = 1 << iota Close Pending ) ``` 测试代码 ```go package constart_test import ( "testing" ) const ( Monday = iota + 1 Tuesday Wednesday Thursday Friday Saturday Sunday ) const ( Open = 1 << iota //0001 Close //0010 Pending //0011 ) func TestConstantTry(t *testing.T) { t.Log(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday) } func TestConstantTry1(t *testing.T) { a := 6 t.Log(uint8(a), uint(Open), uint(Close), uint(Pending)) c := a & Open t.Logf("第一行 - c 的值为 %d\n", c) c = a & Close t.Logf("第一行 - c 的值为 %d\n", c) c = a & Pending t.Logf("第一行 - c 的值为 %d\n", c) t.Log(a&Open == Open, a&Close == Close, a&Pending == Pending) } ``` 输出 ```shell --- PASS: TestConstantTry (0.00s) constant_try_test.go:24: 1 2 3 4 5 6 7 === RUN TestConstantTry1 --- PASS: TestConstantTry1 (0.00s) constant_try_test.go:30: 6 1 2 4 constant_try_test.go:32: 第一行 - c 的值为 0 constant_try_test.go:34: 第一行 - c 的值为 2 constant_try_test.go:36: 第一行 - c 的值为 4 constant_try_test.go:37: false true true PASS Process finished with exit code 0 ``` 示例代码请访问:[https://github.com/wenjianzhang](https://github.com/wenjianzhang)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

448 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传