字符串
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不能跳过内部变量声明语句 |