int/uint :根据系统确定是32还是64位。此外还有int8/uint8、int16/uint16、int32/uint32、int64/uint64

byte:字节型,相当于uint8。

float:go语言中没有double型,因为已经有了float32/float64,分别精确到小数点后面7、15位。

uintptr:保存32bit或64bit指针,应该是保存指针的地址

数组array:

数组是有类型的,比如var a [10]int= [10]int{1},a的类型为[10]int。

数组之间可以比较相等==或者不相等(!=),前提是类型相同。如果数组间类型相同且内容依次都一致,那么两个数组相等;如果两个数组类型相同,内容不一致,那么数组不相等。

数组间赋值是值拷贝,会拷贝整个数组的所有元素给另一个数组,而不是引用拷贝,这点和C很不一样!!!

string

有地方说string是不可变的。这里要从string的内部结构说起:

1 type StringHeader struct {     
2     Data uintptr     
3     Len  int
4 }

 string内部是一个指向某块内存的指针,加上内存块的长度。这里说的string不可变指的是uintptr指向的内存块的内容不可变,但是其指向可以变,用C语言描述一下就是:

const T *uintptr;

 

 

struct

struct是值类型。struct的声明和初始化如下:

 1     type Person struct {
 2         Name string
 3         Age  int
 4     }//struct声明
 5 
 6     a := Person{
 7         Age:  1,
 8         Name: "hao",
 9     }//直接初始化赋值,每个赋值语句后面要有逗号
10 
11     b := Person{}    //空结构体
View Code

相关文章:

  • 2021-09-27
  • 2021-06-05
  • 2022-12-23
  • 2021-06-07
  • 2022-12-23
  • 2022-12-23
  • 2021-07-10
  • 2022-01-23
猜你喜欢
  • 2021-07-07
  • 2021-03-09
  • 2021-11-05
  • 2022-01-11
  • 2021-06-11
  • 2021-06-03
  • 2022-12-23
相关资源
相似解决方案