golang--基本数据类型,big.Int类型,类型转换

nil 是 interface、function、pointer、map、slice 和 channel 类型变量的默认初始值
不可以用"=="比较类型: slice(切片)、map(key-value集合)、func(函数)
Go 语言采用的是哈希查找表,并且使用链表解决哈希冲突。go1.9以后(含)。源码src/runtime/map.go
map的比较可以使用reflect.DeepEqual()

m1 := map[string]string{"one": "a", "two": "b"}
m2 := map[string]string{"two": "b", "one": "a"}
// 1.map类型的值的比较,常规的思路:1).    比较长度是否相等. 2).    比较key是不是相等 3). 比较相同key的value是不是相等

if len(m1)!=len(m2){
	fmt.Println("!=")
	return
}
for k, v := range m1 {
	if _,ok:=m2[k];!ok{
		fmt.Println("!=",i)
		return
	}
	if m2[k]!=v{
		fmt.Println("!=")
		return
	}
}
for k, v := range m2 {
	if _,ok:=m1[k];!ok{
		fmt.Println("!=")
		return
	}
	if m1[k]!=v{
		fmt.Println("!=")
		return
	}
}
fmt.Println("==")

// 2. equal := reflect.DeepEqual(m1, m2)  //性能有时稍差
fmt.Println("v1 == v2: ",equal )    

如果要大小写不敏感来比较 byte 或 string 中的英文文本,可以使用 “bytes” 或 “strings” 包的 ToUpper() 和 ToLower() 函数。比较其他语言的 byte 或 string,应使用 bytes.EqualFold() 和 strings.EqualFold()

如果 byte slice 中含有验证用户身份的数据(密文哈希、token 等),不应再使用 reflect.DeepEqual()、bytes.Equal()、 bytes.Compare()。这三个函数容易对程序造成 timing attacks,此时应使用 “crypto/subtle” 包中的 subtle.ConstantTimeCompare() 等函数

reflect.DeepEqual() 认为空 slice 与 nil slice 并不相等,但注意 byte.Equal() 会认为二者相等:
var b1 []byte = nil
b2 := []byte{}
fmt.Println(reflect.DeepEqual(b1,b2),bytes.Equal(b1,b2)) //false true

一、string

string的len是字节长度,英文1个字节,中文3个字节
字符长度

	str:="zh里"
	runes := []rune(str)
	fmt.Println(len(runes))

截取的值为ASCII码.

如果要得到字符串的字符数,可使用 “unicode/utf8” 包中的 RuneCountInString(str string) (n int)

str2 := "A♥C中"
fmt.Println(utf8.RuneCountInString(str2),len(str2))    // 4,8
char := "é"  //法语
fmt.Println(len(char))    // 2
fmt.Println(utf8.RuneCountInString(char))    // 1
fmt.Println("cafe\u0301") 法语café

二、类型转换

go语言string、int、int64互相转换

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值