3函数和包
3.1包
Go以包的形式管理文件和项目目录结构。Go中的每个文件都属于一个包。
- 语法
package 包名 // 文件打包
// 包名与文件名一致,且为小写字母
import "包的路径" // 引入包
import ( // 引入多个包
"包名1"
"包名2"
)
3.2函数
- 语法
func 函数名 (形参列表) (返回值列表) {
...
return 返回值列表 // 可以没有返回值,也能没有return语句
// 只有一个返回值(且未命名)时,可以省略(返回值列表)的括号
// 接收函数返回值时,如果希望忽略某个返回值,可以使用 _ 接收那个希望忽略的值
}
-
Go中的函数也是一种数据类型。
可以把函数赋值给一个变量,也能作为形参并调用
-
支持对函数返回值命名
对返回值命名时,那些命名的返回值后方的所有返回值也要一并命名。
只要有对返回值的命名,就能使用单独的 return 语句。届时将所有命名的返回值返回,未命名的返回值返回那个类型的零值
即使对返回值进行了命名,也能指定返回值。指定返回值时必须指定全部返回值
3.2.1 init 函数
每个源文件都能包含一个 init 函数。该函数会在 main 函数执行前,被 Go 调用。
通常可以在 init 函数中完成初始化工作。
func init() {
...
}
3.2.2 匿名函数
- Go 支持匿名函数。如果我们希望某个函数只使用一次,可以使用匿名函数。
i := func(形参名1 数据类型1, 形参名2 数据类型2) int {
...
}(实参1, 实参2)
- 匿名函数也能多次调用。将匿名函数赋给变量。通过变量来调用
f := func(形参名1 数据类型1, 形参名2 数据类型2) int {
...
}
i := f(实参1, 实参2)
3.3常用函数
3.3.1 字符串函数
-
len(string) int:返回传入的字符串的长度
-
strconv.Atoi(string)(int, error):将字符串转成整数
-
strconv.Itoa(int) string:将整数转成字符串
-
strconv.FormatInt(int, int) string:将指定 int 转为指定进制的字符串
-
strings.Contains(string, string) bool:查找子串是否在指定字符串中
-
strings.Count(string, string) int:统计字符串中有多少指定的子串
-
strings.EqualFold(string, string) bool:不区分大小写地比较字符串是否相等
-
strings.Index(string, string) int:返回子串第一次出现的 index 值。没有则返回 -1
strings.LastIndex(string, string) int:返回子串最后一次出现的 index 值
-
strings.Replace(string, string, string, int) string:将指定子串替换为另一个子串。可以指定要替换的数量。-1 的场合全部替换
-
strings.ToLower(string) string:转为全部小写英文字母
strings.ToUpper(string) string:转为全部大写英文字母
-
strings.Split(string, string) string[]:按照指定字符对字符串进行分割
-
strings.TrimSpace(string) string:去掉字符串前后的空格
strings.Trim(string, string) string:去掉字符串前后的所有的指定字符
那些指定字符指的是第二个字符串参数中,包含的任意字符
-
strings.TrimLeft(string, string) string:仅去掉字符串左边的指定字符
-
strings.TrimRight(string, string) string:仅去掉字符串右边的指定字符
-
strings.HasPrefix(string, string) bool:字符串是否以某子串开头
-
strings.HasSuffix(string, string) bool:字符串是否以某子串结尾
3.3.2 时间和日期函数
-
time.Time:Time 类型。代表时间
time.Now() Time:获取一个当前时间的 Time 对象
-
获取 Time 对象的某项时间参数
t.Day() int:获取日数
t.Month() time.Month:获取月份。利用类型转换才能得到 int 类型的月份
t.Year() int:获取年份
t.Hour() int、t.Minute() int、t.Second() int:获取时、分、秒
t.Format(string) string:按照字符串格式将格式化该时间。
t.Unix() int:获取指定时间戳
t.UnixNano() int64:获取指定纳秒时间戳
-
time.Hour:时间常量,代表 1 小时。
time.Minute、time.Second:分钟、秒
time.Millisecond:毫秒。
time.Microsecond:微秒。
time.Nanosecond:纳秒。