字符串
| var a ="hello" a[0]='b' ? |
//字符串是常量,可以访问其字节单元,但是不能修改某个字节的值 |
| 字符串尾部不包含NULL字符 |
与C++区分 |
| 基于字符串创建的切片和原字符串指向相同的底层字符数组,同样不能修改 |
指针
| 结构体指针访问结构体字段仍然用.,go语言没有 ‘->’ |
与C++区分 |
| a:=12 b:=&a *b++? b++ ? |
go语言不支持指针运算, 在C++中b++,是指内存地址的偏移 |
| func sum(a,b int) *int{ sum:=a+b return &sum } |
go语言允许函数返回局部变量的引用 go语言的“栈逃逸”机制 |
数组和切片
| go语言数组 定长性 、值拷贝 (改变拷贝后数组的数值,不影响原数组) go语言切片 可扩长 、(改变拷贝后切片的数值,改变原切片 ) a:=make(int, 2,4) b:=a b[0]=2 改变原切片a a:=make(int, 2,4) b:=make(int,2,4) copy(b,a) b[0]=2 不改变原切片a |
map
| type User struct{ name string age int } ma:=make(map(int)User) user:=User{ name: "cui", age:12, } ma[1]=user ma[1].age=13? user.age=13 ma[1]=user?? |
不能直接修改map中value的某个元素的值 |
标签
| goto L ? v:=3 L: |
goto不能跳过内部变量声明语句 |