zoukankan      html  css  js  c++  java
  • go注意点

    go类型用别名之后就属于新的类型。

    go指针不能+1取下一个地址。

    go没有前置++,--(++a是错的)

    用==比较数组(注意数组可以比较,切片不能比较)

      相同维数且含有相同个数元素的数组才可以进行比较

      每个元素都相同的才相等

    &^ 按位清零

    1 &^ 0 -- 1

    1 &^ 1 -- 0

    go-for

    执行无限循环

    for {}

    go 在switch里面不需要添加break,语句自己带有break

    switch支持case里面填写多条件

    例如:

    switch {

      case 0<=NUM &&NUM <=3

        fmt.print(1)

      case 5,6:

    -----------------------

    数组和切片(切片是共享存储结构的)

    var a [3]int //声明并初始化为默认零值

    }

    循环常用为:

    for i:=0;i<len(arr);i++ {}

    推荐使用for idx,e := range arr{}

    数组截取方法(不支持负数获取)

    例如:

    a :=[...]int{1,2,3,4,5}

    a[1:2]//2

    a[1:3]//2,3

    a[1:len(a)]//2,3,4,5

    a[1:]//2,3,4,5

    a[:3]//1,2,3

    数组和切片的区别是,数组是有长度的,切片是没有长度的

    切片使用append填充数据

    make(arr len,cap)   //创建切片

    如果一个切片用append进去的时候,那么数组增加会在cap中调取

    例如:

    make(a,3,5)

    fmt.print(a)//0,0,0

    a=append(a,666)

    fmt.print(a)//0,0,0,666

    当一个参数放到切片中的时候,如果空间不够就会*2的整长

    例如:

    s:=[]int{}

    for i:=0;i<10;i++ {

    s=append(s,i)

    t.log(len(s),cap(s))//len对一个一个递增,但是cap会在不够的情况下翻倍递增

    }

    //cap比较特殊

    ----------

    map类型

    m3 := make(map[int]int,10)//这个时候打印出来的长度为0,当make用与map的时候,第二个参数实际上为map

    在访问Key不存在时,既然会返回零值,不能通过返回nil来判断元素是否存在

    -----------

     函数

    与其他主要编程语言的差异

    1. 可以有多个返回值

    2. 所有参数都是值传递:slice,map,channel会有传引用的错觉

    3. 函数可以作为变量的值

    4. 函数可以作为参数和返回值

    --------

    struct为指正或者为值的时候,访问方式都是用struct.id类似来访问

    --------

    共享内存并发机制

    sync.Mutex

    推荐使用sync.WaitGroup

  • 相关阅读:
    Asp.net调用百度搜索引擎
    iOS 之 alcatraz (插件管理器)
    @dynamic、@synthesize
    iOS 准备
    iOS 沙盒
    iOS 引导页
    iOS 开发之登陆
    iOS 程序开发
    Java 验证用户名、密码
    数据库操作
  • 原文地址:https://www.cnblogs.com/yifan72/p/11299339.html
Copyright © 2011-2022 走看看