Go 语言入门指南:基础语法和常用特性解析2| 豆包MarsCode AI刷题

57 阅读3分钟

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:纳秒。