go笔记1

类型:

一.基本类型:

int, float, double, char, byte等与其它语言基本一致。下面两种特殊:

string:字符串类型,与java的string一样,是不可变的,赋值时是深拷贝的。优化时使用[]byte。

[n]my_type:数组类型,这个在赋值操作或函数传参(初始化)时是深拷贝的,函数传参时与C/C++中的数组的不一样,C/C++是将数组型形参优化成指针。优化时使用[]my_type。

二.其它类型:

1.[]my_type:切片,与C++中的vector类似,该结构有三个成员,一个指向具体元素的指针,两个int型变量,一个是大小,一个是容量。

    初始化:

    make([]my_type)

     make([]my_type, 长度)

    make([]my_type, 长度, 容量)

2.map[my_type1]my_type2:映射,与C++或java中的哈希表实现的map类似,与python中的字典类似。

    初始化:

    make ( map [KeyType] ValueType, initialCapacity )

    make ( map [KeyType] ValueType )

    map[KeyType ] ValueType {}

    map[KeyType ] ValueType { key1 : value1, key2: value2, ... , keyN : valueN}

3.cnannel:通道,与其他语言的线程安全的队列类似。

    初始化:

    make(chan 类型, 容量)

4.自定义类型: 与c中的结构体类似,可以通过new函数返回该类型的指针。成员函数,在C++与java通过编译器默认增加this指针,而go需要自行指定,既可以指定为指针类型 ,也可以指定为值类型,视效率而定,一般指定为指针为型。

5.接口类型:一组行为定义,实现了该组行为的类型可以看做是该接口的子类。空接口类型与C/C++中的void*类似,与java中的object类似。

6.函数类型:与C/C++中的函数指针类型。函数类型的变量与普通变量无异。

(反射机制:常配合空接口一起使用,通过反射获取得具体的类型和具体的值)

(系统创建对象函数:func new(Type)  *Type


阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭