go 函数

  //字符串的使用
str := "golang你好" //字符串长度 fmt.Println(len(str)) //循环输出 for k, v := range str { fmt.Printf("索引为:%d,具体值为:%c \n", k, v) } //以切片循环展示 r := []rune(str) for i := 0; i < len(r); i++ { fmt.Printf("%c \n", r[i]) } //字符串转整数 fmt.Println(strconv.Atoi("99")) //正数转字符串 fmt.Println(strconv.Itoa(88)) //统计一个字符串有几个指定的字符 fmt.Println(strings.Count("golandan", "ab")) //个数如:0;1; //不区分大小写的字符串比较 fmt.Println(strings.EqualFold("hello111", "HELLO11")) //一样:true,不一样:false //区分大小写字符串比较 fmt.Println("hello" == "hello") //一样:true,不一样:false //返回字符在字符串中第一次出现的索引值,如果没有返回-1 fmt.Println(strings.Index("golandd", "d")) //字符串的替换,字符串,根据哪个值替换,要替换成什么,替换几个(全部替换为负数) fmt.Println(strings.Replace("ggiiig", "g", "0", 1)) //将字符串的字母进行大小写替换 fmt.Println(strings.ToLower("Go")) //转小写 fmt.Println(strings.ToUpper("go")) //转大写 //将字符串左右两边的空格去掉 fmt.Println(strings.TrimSpace(" go and php ")) //将字符串左边指定的字符去掉 fmt.Println(strings.TrimLeft("~golang", "~g")) //将字符串右边指定的字符去掉 fmt.Println(strings.TrimRight("~golang", "ng")) //判断字符串是否以指定的字符串开头 fmt.Println(strings.HasPrefix("http://java.sun.com/jsp", "https")) //一样:true,不一样:false //判断字符串是否以指定的字符串结束 fmt.Println(strings.HasSuffix("demo.png", ".png1")) //一样:true,不一样:false

 

//时间函数的使用

//时间和日期的函数,需要导入time包,所以你获取当前时间,就需要调用函数Now函数
    now := time.Now()

    //Now()返回值是一个结构体,类型是time.Time
    fmt.Printf("%T \n", now) //time.Time
    fmt.Println(now)         //2024-03-03 21:48:41.175197 +0800 CST m=+0.000535793

    //调用结构体中的方法
    fmt.Printf("年:%v \n", now.Year())       //年:2024
    fmt.Printf("月:%v \n", now.Month())      //月:March
    fmt.Printf("月:%v \n", int(now.Month())) //月:3
    fmt.Printf("日:%v \n", now.Day())        //日:3
    fmt.Printf("时:%v \n", now.Hour())       //时:21
    fmt.Printf("分:%v \n", now.Minute())     //分:55
    fmt.Printf("秒:%v \n", now.Second())     //秒:56

    //Sprintf可以到将字符串,以便后续使用
    datestr := fmt.Sprintf("当前年月日:%d-%d-%d 时分秒:%d: %d: %d \n", now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
    fmt.Println(datestr) //当前年月日:2024-3-3 时分秒:22: 6: 32

    //字符串参数是固定的(必须这么写)
    fmt.Println(now.Format("2006/01/02 15/04/05")) //也可以根据自己选择进行组合:now.Format("2006 15:04")

 

  //数组的使用(赋值)

    //第一种
    var arr1 [3]int = [3]int{3, 5, 1}
    fmt.Println(arr1)

    //第二中
    var arr2 = [3]int{1, 2, 3}
    fmt.Println(arr2)

    //第三种
    var arr3 = [...]int{7, 8, 9, 0}
    fmt.Println(arr3)

    //第四种
    var arr4 = [...]int{2: 4, 1: 5, 3: 6, 0: 7}
    fmt.Println(arr4)

  //利用指针修改数组的值
  func main() {
  var arr = [3]int{1, 4, 7}

  test(&arr)
  fmt.Println(arr)
  }

  func test(arr *[3]int) {
   (*arr)[0] = 7
  }
 

 

//占位符(%的使用及要表达意思)

通用占位符:
%v:按照值的默认格式输出。
%+v:输出结构体时,会添加字段名。
%#v:输出 Go 语法表示的值。
%T:输出变量的类型。
%%:输出百分号。
布尔值占位符:
%t:格式化布尔值。
整数占位符:
%b:以二进制形式输出。 %c:输出字符。 %d:以十进制形式输出。 %o:以八进制形式输出。 %x:以十六进制形式输出,字母小写。 %X:以十六进制形式输出,字母大写。 %U:Unicode 格式输出。
浮点数占位符:
%e:科学计数法,小写 "e"%E:科学计数法,大写 "E"%f:标准计数法。 %g:根据实际情况选择 %e 或 %f。 %G:根据实际情况选择 %E 或 %f.
字符串和字节切片占位符:
%s:输出字符串。 %q:输出带双引号的字符串。 %x:以十六进制形式输出字符串。 %p:以十六进制形式输出指针。
指针占位符:
%p:输出指针地址。
宽度和精度: 占位符可以使用数字来控制宽度和精度,如
%5.2f 表示总宽度为 5,小数点后保留 2 位。

 

  //切片的使用

    //定义数组
    var intarr [9]int = [9]int{1, 4, 2, 7, 8, 9, 6, 4, 3}
    fmt.Println(intarr)
    //切片构建在数组之上
    //定义一个切片名字为slice,[]动态变化的数组长度不写,int类型,intarr是原数组
    //[1:3]切片 - 切出的一段片段 - 索引:从1开始,到3结束(不包含3) - [1,3]
    var slice []int = intarr[1:3] //等同于:slice := intarr[1:3]
    fmt.Println(slice)
    //获取切片的容量;容量可以动态变化
    fmt.Println("slice的容量:", cap(slice)) //cap()为内存函数

 

错误异常处理:(简单事例)

 

import (
    "errors"
    "fmt"
)

func main() {
    //利用defer + recover来捕获错误,defer后加上匿名函数的调用(方式1)
    defer func() {
        //调用recover内置函数,可以捕获错误:
        err := recover()
        if err != nil {
            fmt.Println("捕获错误是:", err)
        }
    }()

    //=========(方式2:)
    err := recover()
    if err != nil {
        fmt.Println("捕获错误是:", err)

        //终止,不会再往下执行
        panic(err)
    }

    fmt.Println("21244")

    //打印结果
    fmt.Println(test())
}

func test() (err error) {
    num1 := 10
    num2 := 0

    //判断验证
    if num2 == 0 {
        //抛出自定义错误(方式3)
        return errors.New("除数不能为0")
    } else {
        result := num1 / num2
        fmt.Println(result)
        return nil
    }
}

 

其他

    //键盘录入
    var name int
    fmt.Printf("请输入第 %d 个学生成绩: ", 1)
    fmt.Scanln(&name)     

 

posted @ 2024-03-03 21:45  祈愿仙帝  阅读(3)  评论(0编辑  收藏  举报