Welcome to Rooeye's blog

golang 优雅代码片段实现

golang rooeye 150℃ 0评论

 

No1.本来是想查查 golang 有没有自带 reverse 函数的,好吧,貌似没有。

不过在网上找到了一段实现,代码很优雅,思路是首尾两个指针,每次交换两个指针的内容,然后首指针前进一步,尾指针后退一步,同样的代码我也能写出来但是写的这么美却难以做到。

代码贴在这里啦:

func reverseString(s string) string {
	runes := []rune(s)
	for from, to := 0, len(runes)-1; from < to; from, to = from+1, to-1 {
		runes[from], runes[to] = runes[to], runes[from]
	}
	return string(runes)
}

 

No2.这是我见过的最简洁漂亮的对KB,MB,GB,TB的枚举定义,不得不说golang语法太优雅了,我们知道iota是从0开始递增的,所以值依次是:
1<

const (
	_        = iota             // iota = 0
	KB int64 = 1 << (10 * iota) // iota = 1
	MB                          // 与 KB 表达式相同,但 iota = 2
	GB
	TB
)

结果:

1024
1048576
1073741824
1099511627776

 

No3.判断两个字符串是否为变形词,变形词即两个字符串中的字符出现的种类和数目相同,这段代码自己写的,熟悉一下rune。

func function(str1 string, str2 string) bool {
	var num map[rune]int = make(map[rune]int)
	for _, val := range str1 {
		num[val]++
	}
	for _, val := range str2 {
		num[val]--
	}
	for _, val := range num {
		if val != 0 {
		    return false
		}
	}
	return true
}

转载请注明:寻梦人博客 » golang 优雅代码片段实现

喜欢 (2)
发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址