Go学习笔记 - 基本结构

2018-02-10 笔记 #Go

基本结构

package main

import "fmt"

// 变量

// 函数
func main(){
    fmt.Println("Hello Go")
}

名称规范

break   default func    interface   select
case    defer   go      map         struct
chan    else    goto    package     switch
const   if      range   type        fallthrough
contine for     import  return      var

变量

声明

使用关键字var声明变量。

var name type = expression
// 例如
var name string = "张三"


// 短变量声明, 使用 := 自动推导结果到变量
name := expression
// 例如
name := "李四"

类型

整数

Go 同时具备有符号整数和无符号整数,有符号可以理解为:支持表示正负数,无符号可以理解为全是正数。

有符号整数分4种大小:8位、16位、32位、64位,用int8、int16、int32、int64表示,对应的无符号整数是uint8、uint16、uint32、uint64。

还有两种类型int和uint。在特定的平台上,其大小与原生的有符号整数/无符号整数相同,或等于该平台上的运算效率最高的值。这两种类型大小相等,都是32位或者64位,具体大小由编译器决定。

rune类型是int32类型的同义词,常常用于指明一个值是Unicode码点(code point)。这两个名称可以互相使用。同样,byte类型是unit8类型的同义词,强调一个值是原始数据,而非量值。

还有一种无符号整数 uintptr,大小不明确,可以用于保存指针类型。仅用于底层编程。

浮点数

Go具有两种大小的浮点数,float32 和 float64。可以通过math包的math.MaxFloat32math.MaxFloat64 常量来查看两种类型的最大值。

十进制情况下,float32的有效数字大约是6位,float64的有效数字大约是15位。

var f float32 = 2.3453

// 支持小数点前后不写
var f1 float32 = .234
var f2 float32 = 2344.

// 非常大或非常小的数字使用科学记数法,在数量级指数前写字母e或E
const Avogadro = 6.0214553e23
const Planck =  5.73245345e-34

复数

Go 具备两种大小的复数 complex64 和 complex128,二者分别由float32和float64构成。内置的complex函数根据给定的实部和虚部创建复数,内置的real函数和imag函数分别提取复数的实部和虚部。

var x complex128 = complex(1,2)

指针

new 函数

变量的生命周期

赋值

多重赋值

可赋值性

类型声明

使用type关键字声明命名类型,它和某个已有的类型使用相同的底层类型。语法如下

type name underlying-type

// 示例

// 定义一个摄氏度的类型
type Celsius float64

// 定义一个华氏度的类型
type Fahrenheit float64

包和文件


// 方式1
import "fmt"
import "math"

// 方式2
import (
    "fmt"
    "math"
)

// 方式3:短名称(解决多个包名相同冲突问题
// 其中,使用. 代表直接可以调用,不需要用包名(不推荐)
import (
    std "fmt"
    . "math"
)




文章作者:eightpigs
创作时间:2018-02-10
更新时间: 2019-03-04
许可协议:CC by-nc-nd 4.0