Go 学习笔记(二)- 程序结构

cxfq3886 8年前
   <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>