zoukankan      html  css  js  c++  java
  • go语言学习笔记

    Go语言学习
    基本类型
    Bool 取值范围:true,false (不可以用数字代替)
    Int/uint 根据平台可能为32或64位
    int8/uint8 长度:1字节 取值范围-128~127/0~255
    byte(uint8别名)
    int16/uint16 int32/uint32 int62/uint64
    float32/float64 长度:4/8字节 小数位:精确到7/15小数位
    复数:complex64/complex128 长度:8/16字节 足够保存指针的32位或64位整数型
    零值是变量的默认值


    在submit里面ctrl+b是打开我们的测试窗口,go run 是运行程序

    Go语言中只能显示转换<valueA> [:]=<TypeOfValueA>(<ValueB>)
    浮点型和布尔型不能进行转换
    string转换为int类型 var valueA, _ = strconv.Atoi(ValueB)
    Int类型转换为string类型 valueA:= strconv.Itoa(ValueB)

    1. #string到int  
    2. int,err:=strconv.Atoi(string)  
    3. #string到int64  
    4. int64, err := strconv.ParseInt(string, 10, 64)  
    5. #int到string  
    6. string:=strconv.Itoa(int)  
    7. #int64到string  
    8. string:=strconv.FormatInt(int64,10)  


    Go中有指针
    采用”.”选择符来操作指针目标对象的成员
    操作符”&”取变量地址,使用”*”通过指针间接访问目标对象
    默认值为nil不是null

    If语句中大括号必须跟在条件语句后面,条件语句可以没有括号,可以在条件语句中可以声明变量

    For语句 for{} 无限循环 for i:=0;i<3;i++ {} 经典模式

    Switch 支持任何类型或表达式的条件语句,不需要break,符合条件自动跳出,如需要继续执行下一个case,需要使用fallthrough语句,支持初始化表达式,右侧需跟分号,做大括号必须和条件语句在同一行。

    Goto break和continue会与标签结合使用,否则break只会跳出本次循环


    数组 var a [2]int //长度为2的int型数组
    没有赋值,则默认的值为零;string默认为空
    a :=[2]int{1} //数组的第一个数为1,第二个为默认0
    a :=[20]int{19:1} //添加索引,第二十个元素为0,其他为0
    a :=[…]int{1,2,3,4,5} //长度为5的数组
    a :=[…]int{19:1} //索引20元素为1,其他为零,数组长度为20

    数组指针 a := […]int{19:1}
    Var p *[100]int= &a //p位数组a的地址
    指针数组 x,y=1,2
    a:=[…]int{&x,&y} //a输出的是x,y的地址
    数组之间可以进行==和!=的比较

    切片Slice
    本身不是数组,它指向底层的数组
    可以直接创建或从底层数组获取生成
    len()获取元素个数,cap()获取容量,make()创建,如果多个slice指向相同底层数组,其中一个的值改变会影响全部
    make([]T,len,cap) 如果cap省略,则和len的值相同

    var a=[]int //切片的定义

    a:=[10]int
    s1:=a[5:] //切片s1取数组a索引5到最后的元素
    s1:=a[:5]//s1取数组a索引0到5的元素
    s1:=a[3:9] //s1取数组a索引3到9的元素

    s1 :=make([]int,3,6) //定义s1切片,长度为3,容量为6
    s1=append(s1,1,2,3) //利用append函数为切片s1追加元素1.2.3


    map
    var m map[int]string //map定义
    m=make(map[intstring]) //初始化
    m[1]=”ok” //赋值
    a :=m[1] //取值
    delete(m,1) //删除值

    多重map嵌套,需要第二层的进行初始化
    var m map[int]map[int]string
    m=make(map[int]map[int]string)
    m[1]=make(map[int]string) //对于key为1 进行初始化
    m[1][1]=”ok”
    a:=m[]

    range 迭代函数
    sort.Ints(s) 排序

    对map的间接排序
    m :=map[int]string{1:”a”,2:”b”,3:”c”,4:”d”,5:”e”} //建map
    s:=make([]int,len(m))//建slice
    i:=0
    for k,_:=range m{ //迭代取出每一个key的值,存到slice中
    s[i]=k
    i++
    }
    Sort.Ints(s) //对slice排序


    Go 函数 不支持 嵌套、重载和默认参数
    无需声明原型、不定长度变参、多返回值、命名返回值参数
    匿名函数、闭包
    defer
    在函数体执行结束后
    按照调用顺序的相反顺序逐个执行
    即使函数发生严重错误也会执行
    支持匿名函数的调用
    常用于资源清理、文件关闭、解锁以及记录时间等操作
    通过与匿名函数配合可在return之后修改函数计算结果
    如果函数体内某个变量作为defer时匿名函数的参数,则在定义defer
    时即已经获得了拷贝,否则则是引用某个变量的地址
    Go 没有异常机制,但有 panic/recover 模式来处理错误
    Panic 可以在任何地方引发,但recover只有在defer调用的函数中有效

    结构体
    Go 中的struct与C中的struct非常相似,并且Go没有class
    使用 type <Name> struct{} 定义结构,名称遵循可见性规则
    支持指向自身的指针类型成员
    支持匿名结构,可用作成员或定义成员变量
    匿名结构也可以用于map的值
    可以使用字面值对结构进行初始化
    允许直接通过指针来读写结构成员
    相同类型的成员可进行直接拷贝赋值
    支持 == 与 !=比较运算符,但不支持 > 或 <
    支持匿名字段,本质上是定义了以某个类型名为名称的字段
    嵌入结构作为匿名字段看起来像继承,但不是继承
    可以使用匿名字段指针

  • 相关阅读:
    UVA 1513
    《ArcGIS Runtime SDK for Android开发笔记》——问题集:.geodatabase创建,创建时内容缺失问题总结
    《ArcGIS Runtime SDK for Android开发笔记》——问题集:使用TextSymbol做标注显示乱码
    《ArcGIS Runtime SDK for Android开发笔记》——(7)、示例代码arcgis-runtime-samples-android的使用
    《ArcGIS Runtime SDK for Android开发笔记》——(6)、基于Android Studio的ArcGIS Android工程结构解析
    《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)
    《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境
    《ArcGIS Runtime SDK for Android开发笔记》——(3)、ArcGIS Runtime SDK概述
    《ArcGIS Runtime SDK for Android开发笔记》——(2)、Android Studio基本配置与使用
    《ArcGIS Runtime SDK for Android开发笔记》——(1)、Android Studio下载与安装
  • 原文地址:https://www.cnblogs.com/LiLiliang/p/5523217.html
Copyright © 2011-2022 走看看