Go 学习笔记(二)- 程序结构
cxfq3886
9年前
<p> </p> <p>本章介绍了命名,关键词,声明,赋值,类型,包,作用域等概念,但主要介绍的只是程序结构和声明。</p> <h2>命名</h2> <p>Go 变量区分大小写 字母或下划线开头,推荐 驼峰式 命名,在一个包里,变量,常量,函数首字母大写,它将是导出的,例如fmt包的Printf函数就是导出方法。</p> <h2>关键词</h2> <p>Go 语言中有25个关键词:</p> <pre> break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continue for import return var </pre> <p>貌似其他语言也都差不多,部分不同。。</p> <h2>内建类型及函数</h2> <p>Go 有30多个预定义的名字的内建常量、类型和函数。</p> <pre> 内建常量: true false iota nil 内建类型: int int16 int32 int64 int8 uint uint16 uint32 uint64 uint8 uintptr float32 float64 complex128 complex64 bool byte error rune string ComplexType FloatType IntegerType Type Type1 内建函数: make len cap new append copy close delete complex real imag panic recover print println </pre> <p>这里列出的比 go圣经 里多了几个类型和函数,不知道什么时候加的,具体查看 <a href="/misc/goto?guid=4959671287561021183" rel="nofollow,noindex">官方文档</a> 。</p> <h2>声明</h2> <p>目前就4个关键词用于声明,var 变量声明,const 常量声明,type 类型声明,func 函数声明。</p> <h3>变量</h3> <p>变量声明的一般语法如下:</p> <pre> var 变量名字 类型 = 表达式 </pre> <p>其中 “类型” 或 “= 表达式” 两个部分可以省略其中的一个。</p> <pre> var a int = 1 // 声明int型并初始化为 1 var b int // 声明int型,默认初始值为 0 var c = 2 // 根据值类型声明为int型初始化为 2 </pre> <h3>简短变量声明</h3> <p>语法: 名字 := 表达式</p> <p>变量类型根据表达式值自动推导。</p> <p>要特别注意 := 是声明, = 是赋值,不能搞混。</p> <pre> a := 1 b := "str" c := a+1 </pre> <h3>指针</h3> <p>其实也差不多,但是这里的指针比 c 的简单太多了,跟 php 的取地址差不多。</p> <pre> x := 1 p := &x *p = 2 </pre> <h2>赋值</h2> <p>亮点在于可以同时赋值多个,函数也可以返回多个值,叫做 元组赋值。</p> <pre> 变量 = 值 元组赋值 x, y = y, x </pre> <h2>类型</h2> <p>语法: type 类型名字 底层类型</p> <pre> type Celsius float64 // 摄氏温度 type Fahrenheit float64 // 华氏温度 </pre> <p>为什么声明类型?除了可以意义化描述之外,还可以为自定义类型绑定方法(原生类型不可以)。</p> <h2>包</h2> <p>具体以后研究..</p> <h2>作用域</h2> <p>这个貌似跟 es6 类似,块级作用域,没一个 {} 中都是独立的域。。</p> <h2>小结</h2> <p>在这里看到了 es6,php 的影子,相对而言语法还是比较简单易学的。继续加油。。</p> <p>来自: <a href="/misc/goto?guid=4959671287644316915" rel="nofollow">http://www.52cik.com/2016/04/20/go-notes-structure.html</a></p>