go语言圣经-声明
1.四种类型的声明语句:var、const、type和func,分别对应变量、常量、类型和函数实体对象的声明
2.包一级声明语句声明的名字可在整个包对应的每个源文件中访问,局部声明的名字就只能在函数内部很小的范围被访问

go语言圣经-变量
1.var 变量名字 类型 = 表达式
2.零值初始化机制,数值类型零值是0,布尔类型变量对应的零值是false,字符串类型对应的零值是空字符串,接口或引用类型(包括slice、指针、map、chan和函数)变量对应的零值是nil
3.同时声明一组变量,用逗号分隔
4.简短变量声明 := ,只有对已经在同级词法域声明过的变量才和赋值操作语句等价
5.一个指针的值是另一个变量的地址,指针名字为p,那么可以说“p指针指向变量x”,或者说“p指针保存了x变量的内存地址”
6.聚合类型每个成员,可以被取地址
7.函数返回局部变量的地址也是安全的
8.将指针作为参数调用函数,那将可以在函数中通过该指针来更新变量的值。
9.我们对一个变量取地址,或者复制指针,我们都是为原变量创建了新的别名
10.指针是实现标准库中flag包的关键技术,它使用命令行参数来设置对应变量的值
11.另一个创建变量的方法是调用用内建的new函数,new(T)将创建一个T类型的匿名变量,初始化为T类型的零值,然后返回变量地址,返回的指针类型为*T
12.变量的生命周期指的是在程序运行期间变量有效存在的时间间隔
13.从每个包级的变量和每个当前运行函数的每一个局部变量开始,通过指针或引用的访问路径遍历,是否可以找到该变量。如果不存在这样的访问路径,那么说明该变量是不可达的,也就是说它是否存在并不会影响程序后续的计算结果
14.一个循环迭代内部的局部变量的生命周期可能超出其局部作用域。同时,局部变量可能在函数返回之后依然存在。
15.局部变量从函数中逃逸,该局部变量必须在堆上分配

go语言圣经-赋值
1.元组赋值是另一种形式的赋值语句,它允许同时更新多个变量的值,用法交换两个变量的值
2.最大公约数(GCD算法),计算斐波纳契数列(Fibonacci)的第N个数 更加简洁
3.表达式太复杂的话,应该尽量避免过度使用元组赋值;调用一个有多个返回值的函数,可以使用元组赋值,额外的返回值来表达某种错误类型,可以用下划线空白标识符_来丢弃不需要的值
4.程序中还有很多地方会发生隐式的赋值行为:函数传参,复合类型的字面量

go语言圣经-类型
1.type 类型名字 底层类型 类型声明语句
2.类型声明语句一般出现在包一级,因此如果新创建的类型名字的首字符大写,则在外部包也可以使用
3.命名类型还可以为该类型的值定义新的行为
4.许多类型都会定义一个String方法,因为当使用fmt包的打印方法时,将会优先使用该类型对应的String方法返回的结果打印
5.显式转型操作,每一个类型T,都有一个对应的类型转换操作T(x),用于将x转为T类型

go语言圣经-包和文件
1.Go语言中的包和其他语言的库或模块的概念类似,目的都是为了支持模块化、封装、单独编译和代码重用
2.每个包都对应一个独立的名字空间
3.如果一个名字是大写字母开头的,那么该名字是导出的

练习 2.1: 向tempconv包添加类型、常量和函数用来处理Kelvin绝对温度的转换,Kelvin 绝对零度是−273.15°C,Kelvin绝对温度1K和摄氏度1°C的单位间隔是一样的。

1.设置GOPATH
export GOPATH=$HOME/gobook
2.
将要导入的包源代码放在 GOPATH/src/包名 这个目录下

/home/ubuntu/gobook/src/tempconv/tempconv.go

package tempconv
import("fmt"
)
//摄氏度类型声明
type Ce float64
//Kelvin类型
type Kelvin float64//常量声明
const (FreezingK Kelvin=0// 结冰点温度Boilingk Kelvin=100// 沸水温度AbsoluteZeroK Kelvin=-273.15//Kelvin的绝对零度
)//摄氏度转成Kelvin
func CtoK(c Ce) Kelvin{c=c+273.15//显式类型转换return Kelvin(c)
}
//Kelvin转成摄氏度
func KtoC(k Kelvin) Ce{ k=k-273.15//显式类型转换return Ce(k)
}
//类型的String方法
func (c Ce)String() string{return fmt.Sprintf("%g °c",c)
}
//Kelvin类型的String方法
func (k Kelvin)String() string{return fmt.Sprintf("%g °k",k)
}

test.go导入调用上面的包

package main
import("tempconv""fmt"
)
func main(){//练习 2.1: 向tempconv包添加类型、常量和函数用来处理Kelvin绝对温度的转换,Kelvin 绝对零度是−273.15°C,Kelvin绝对温度1K和摄氏度1°C的单位
间隔是一样的。//显式类型转换a:=tempconv.Ce(tempconv.AbsoluteZeroK)b:=tempconv.CtoK(a)fmt.Println(b)c:=tempconv.KtoC(100)fmt.Println(c)
}

  

  

[日常] go语言圣经-声明,变量,赋值,类型,包和文件习题相关推荐

  1. python定义变量并赋值_Python动态声明变量赋值代码实例

    这篇文章主要介绍了Python动态声明变量赋值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 通过exec().globals()和loca ...

  2. [日常] Go语言圣经-GIF动画练习语法

    1.常量声明的值必须是一个数字值.字符串或者一个固定的boolean值. 2.常量声明和变量声明一般都会出现在包级别 3.[]color.Color{...}生成的是一个slice切片和gif.GIF ...

  3. 【Python学习】——语言风格(变量赋值、深浅拷贝、for循环陷阱)

    目录 1.赋值 2.赋值的分类--引用赋值.值赋值 1) 不可变对象引用赋值--字符串.数值.元组等 2)可变对象引用赋值--列表.集合.字典 3)可变与不可变对象的引用赋值内部分析 4)在py文件中 ...

  4. [日常] Go语言圣经-函数递归习题

    练习 5.1: 修改findlinks代码中遍历n.FirstChild链表的部分,将循环调用visit,改成递归调用. 练习 5.2: 编写函数,记录在HTML树中出现的同名元素的次数. 练习 5. ...

  5. [日常] Go语言圣经--Channel习题

    练习 8.3: 在netcat3例子中,conn虽然是一个interface类型的值,但是其底层真实类型是*net.TCPConn,代表一个TCP连接.一个TCP连接有读和写两个部分,可以使用Clos ...

  6. java 循环里声明变量赋值_在Java中声明变量外部Foreach循环

    有人可以请赐教我以下事项: public class Loopy { public static void main(String[] args) { int[] myArray = {7,6,5,4 ...

  7. [日常] Go语言圣经-基于select的多路复用习题

    练习 8.8: 使用select来改造8.3节中的echo服务器,为其增加超时,这样服务器可以在客户端10秒中没有任何喊话时自动断开连接. reverb3.go package mainimport ...

  8. [日常] Go语言圣经-Deferred函数

    1.只需要在调用普通函数或方法前加上关键字defer,就完成了defer所需要的语法.当defer语句被执行时,跟在defer后面的函数会被延迟执行.直到包含该defer语句的函数执行完毕时,defe ...

  9. 《Go语言圣经》学习笔记 第二章 程序结构

    Go语言圣经学习笔记 第二章 程序结构 目录 命名 声明 变量 赋值 类型 包和文件 作用域 注:学习<Go语言圣经>笔记,PDF点击下载,建议看书. Go语言小白学习笔记,几乎是书上的内 ...

最新文章

  1. 错误三次无法输入c语言,不懂就问,为啥错误输入三次不停止呢
  2. uva 1587(Box UVA - 1587)
  3. go语言按行读取文件
  4. android通过php判断用户是否注册,android - 判断Token是否有效
  5. 年过35岁的程序员都去哪了?一张图道尽老程序员们的花样出路
  6. Visual Studio 2010 单元测试之一---普通单元测试:http://blog.csdn.net/tjvictor/archive/2011/02/09/6175362.aspx...
  7. 前端学习(3332):ant design介绍button
  8. 利用css制作3d图片旋转_练习
  9. c语言数字黑洞123问题,PAT-B 1019 数字黑洞 (C语言)
  10. STM32板子电源绘制原理
  11. Java基础---Java---基础加强---类加载器、委托机制、AOP、 动态代理技术、让动态生成的类成为目标类的代理、实现Spring可配置的AOP框架
  12. junit5 入门系列教程-13-junit5 测试接口及默认方法
  13. echarts + vue2.0 实现大数据监测态势感知系统
  14. 开拓海外市场,需要选择怎样的云服务?
  15. Ocata Neutron代码分析(六)——APIRouter的初始化(3)顶级resource的map过程
  16. 美国这几年的人口死亡数据
  17. myeclipse中java.lang.OutOfMemoryError: PermGen space
  18. Android系统打不开,如何修复它:Android手机无法启动
  19. Chinapay 银联支付接口
  20. ffmpeg视频按帧截取图片和ffmpeg将图片合成mp4视频

热门文章

  1. Axure交互之链接行为
  2. 万字干货 | IBO的金融原理和应用方向分析
  3. 我的天!Win10可以从应用商店安装Ubuntu了
  4. 微信小程序修改switch组件的大小
  5. 用Python做一个愿望清单,2020年计划让小美女来督促吧!
  6. 【深度学习实战04】——SSD tensorflow图像和视频的目标检测
  7. linux内核添加系统调用(详细)
  8. java抽象类变量_Java抽象类
  9. MIMIC-ivSQL查询策略-总结篇
  10. 业余数学牛人的数学自学心得(转载)