• Go基础学习【1】


    一:基础类型

    1.不能以数字 ,关键词 ,名字里不能有运算符
    2.导入包不使用会报错
    3.类型有int float bool string 复合型struct array slice map channel 只描述类型的行为的 iinterface
    4.类型转换
    类型b的值 = 类型b(l类型a的值)
    5.init包常用来做调用goroutine执行
    6.:=只能在自己函数内部调用 不可以用于全局变量的声明

    func main() { //GOG
       a = "G"
       print(a)
       f1()
    }
    func f1() {
       a := "O"
       print(a)
       f2() //依旧调用的是全局变量里的a的值
    }
    func f2() {
       print(a)
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    7.go中没有float和double类型 只有float32和float64类型
    8.格式化:%d 整数 %g 浮点数 %b二进制 %o 八进制 %x %X十六进制 大小写 %0d输出定长的整数 %n.mg / %n.mf 表示精确小数点后几位
    %c character %v或%d输出该字符的整数
    9. \n换行 \r 回车 \ 反斜杠 \t tab键
    10.go中的len()用于获取ASCI字符串长度,对于其他字符会占有2-4个字符,(中文字符是占3个字符位置) 而是用RuneCountlnString() 则会获得字符串的长度

    func main() {
       // count number of characters:
       str1 := "asSASA ddd dsjkdsjs dk"
       fmt.Printf("The number of bytes in string str1 is %d\n", len(str1)) //22
       fmt.Printf("The number of characters in string str1 is %d\n", utf8.RuneCountInString(str1)) //22
       str2 := "asSASA ddd dsjkdsjsこん dk"
       fmt.Printf("The number of bytes in string str2 is %d\n", len(str2))  //28
       fmt.Printf("The number of characters in string str2 is %d", utf8.RuneCountInString(str2)) //24
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    11.字符串常用方法:
    1.判断字符串开头结尾是否包含某个

    strings.HasPrefix(s,prefix string) bool 判断orefix是否是s开头
    strings.HasSuffix(s,suffix string) bool 判断suffix是否是s结尾
    
    • 1
    • 2

    2.Contains Index 和 LastIndex 和 IndexRune

    strings.Contains(s,substr string) bool  // 判断字符串substr是否在s
    strings.Index(s,str string) int // 判断str在s中的索引位置
    strings.LastIndex(s,str string) int // 返回str在s中最后出现时的索引位置
    strings.IndexRune(s string,r rune) int //如果查找时候不是asci码时,使用该方法
    //第四个方法例子
    strings.IndexRune("chicken",'k')
    strings.IndexRune("chicken",'d')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    3.Replace 和 count 替换和统计次数

    strings.Replace(str,old,new string,n int)) string //将前n个old替换成new
    strings.count(s,str string) int //统计s中str的个数
    
    • 1
    • 2

    4.重复 Repeat 和 修改字符串的大小写

    strings.Repeat(s,count int) string //将目标字符串重复count遍
    strings.Tolower(s) string  //将字符创转化为小写
    strings.ToUpper(s) string  //将字符串转化为大写
    
    • 1
    • 2
    • 3

    5.修剪TrimSpace,分割Fields,Split,拼接slice 字符串

    strings.TrimSpace(s) //用来剔除字符串开头和结尾的空呗符号
    strings.TrimSpace(s,"cut") // 将开头和结尾的cut去除掉
    strings.Fields(s)  //利用空呗作为分隔符
    strings.split(s,sep) //自定义分隔符号
    strings.join(s1,sep string) // 以sep为分隔符将s1拼接上去
    
    • 1
    • 2
    • 3
    • 4
    • 5

    6.读取内容 NewReader 和 字符串和其他类型的转化

    Read() //从[]byte中读取内容
    ReadByte()ReadRune() //从字符串中读取下一个byte或者rune
    strconv.IntSize //查看int类型所占的位数
    strconv.Itoa(i int) string //返回i的字符串型的十进制数字
    strconv.FormatFloat() string //将 64 位浮点型的数字转换为字符串,其中 fmt 表示格式(其值可以是 'b'、'e'、'f' 或 'g'),prec 表示精度,bitSize 则使用 32 表示 float32,用 64 表示 float64。
    strconv.Atoi(s string)(i int,err error) //将字符串型转化为int类型
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    **7.指针:不可以用于常量
    var i1 = 5 定义变量
    var intP *int 调用指针p
    使用 intP= &i1 将i1的地址赋予intP
    要想表示5 则可以使用 *intP 则可以表示指针所指地址的值
    如果 *intP 的值发生改变,表示的是指针所指地址的值发生改变 那个i1也就发生了改变,不是原来的值

    二:循环结构

    1.for循环两种输出形式
    for xx(){
    }
    for 索引,值 :=range xx{
    }
    2.标签 对大小写敏感 要求全部大写字母**

    LABEL1:
       for i := 0; i <= 5; i++ {
          for j := 0; j <= 5; j++ {
             if j == 4 {
                continue LABEL1
             }
             fmt.Printf("i is: %d, and j is: %d\n", i, j)
          }
       }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    标签的作用对象为外部,所以continue跳出之后,会进入外层的下一步寻循环内

    三:函数

    1、slice…
    如果参数被存储在一个slice类型的变量中,可以通过slice…的形式来调用变成那函数
    2、defer 还可以用来 追踪进入和离开
    类似于java中的finally,最后执行 当有多个deger时,类似于栈,后进先出
    3.闭包
    当函数作为返回值i的时时候,
    func Add2() (func(b int) int) 例如这种
    有 p:= Add2(2) 这个参数2传给你的是返回匿名函数中

    详细查看:我的笔记链接
    感谢观看

  • 相关阅读:
    传奇外网架设教程带图文解说——Gom引擎
    两日总结十二
    拒绝加班,程序员开发的效率工具集
    一个开源轻量级的C#代码格式化工具(支持VS和VS Code)
    信奥中的数学:平面直角坐标系
    【ARM Cache 系列文章 10 -- ARM Cortex-A720 Hunter 介绍】
    交换机和路由器技术-26-OSPF末梢区域配置
    LocalDate和mysql数据库驱动版本
    Apple 已弃用 NavigationView,使用 NavigationStack 和 NavigationSplitView 实现 SwiftUI 导航
    基于Web的skc分类管理系统
  • 原文地址:https://blog.csdn.net/weixin_54174102/article/details/127853861