0%

函数声明

函数声明包括函数名、形式参数列表、返回值列表(可省略)以及函数体。

func function-name(param...) (result...) {
    body
}

形式参数列表描述了函数的参数名以及参数类型。这些参数作为局部变量,其值由参数调用者提供。返回值列表描述了函数返回值的变量名以及类型。如果函数返回一个无名变量或者没有返回值,返回值列表的括号是可以省略的。如果一个函数声明不包括返回值列表,那么函数体执行完毕后,不会返回任何值。

命名

Go语言中的函数名变量名常量名类型名语句标号包名等所有的命名,都遵循一个简单的命名规则:一个名字必须以一个字母(Unicode字母)或下划线开头,后面可以跟任意数量的字母数字下划线.大写字母和小写字母是不同的:heapSort和Heapsort是两个不同的名字.

整型

Go语言同时提供了有符号和无符号类型的整数运算。这里有int8int16int32int64四种截然不同大小的有符号整数类型,分别对应8、16、32、64bit大小的有符号整数,与此对应的是uint8uint16uint32uint64四种无符号整数类型。

接口的定义

接口类型是对其它类型行为的抽象和概括;因为接口类型不会和特定的实现细节绑定在一起,通过这种抽象的方式我们可以让我们的函数更加灵活和更具有适应能力。

时间类型

time.Time类型表示时间。

func demo() {
	now := time.Now() //获取当前时间
	fmt.Printf("Now:%v\n", now)  // Now:2020-08-19 21:53:31.1633023 +0800 CST m=+0.003989401
	year := now.Year()     //年
	month := now.Month()   //月
	day := now.Day()       //日
	hour := now.Hour()     //小时
	minute := now.Minute() //分钟
	second := now.Second() //秒
	fmt.Printf("%d-%02d-%02d %02d:%02d:%02d\n", year, month, day, hour, minute, second) // 2020-08-19 21:53:31
}

时间戳

func stamp() {
	now := time.Now()            //获取当前时间
	timestamp1 := now.Unix()     //时间戳
	timestamp2 := now.UnixNano() //纳秒时间戳
    fmt.Printf("秒时间戳:%v\n", timestamp1) // 秒时间戳:1597845356
	fmt.Printf("纳秒时间戳:%v\n", timestamp2) // 纳秒时间戳:1597845356562315400
}

使用time.Unix()函数可以将时间戳转为时间格式。

error定义

数据结构

go语言error是一普通的值,实现方式为简单一个接口。

// The error built-in interface type is the conventional interface for
// representing an error condition, with the nil value representing no error.

type error interface {
    Error() string
}

创建error

使用errors.New()

fmt

fmt包实现了类似C语言printf和scanf的格式化I/O。主要分为向外输出内容和获取输入内容两大部分。

向外输出

标准库fmt提供了以下几种输出相关函数。