Go-ACM模式刷题常用函数和注意事项
Go-ACM模式刷题常用函数和注意事项
由于个人能力有限,部分描述若不正确,感谢指出!暂时记录这些,期待更新!
一、终端输入相关函数和注意事项
var a,b,x int
fmt.Scan(&a,&b) // 一个或多个数据绑定。用空格分割stdin输入数据,并把换行符算作空格,然后传递给本函数的参数
fmt.Scanln(&a,&b) // 类似Scan,遇到换行停止扫描,必须在最后一项之后有换行符或EOF
fmt.Scanf("%d",&x) // 对空格分割的字符串或其他数据类型格式化,会把换行符也当作输入的!由于数据是先缓存,然后再传递给参数,所以如果格式中没有换行符,但输入回车换行,会保存到下一个参数中!
还有一些细节,比如输入类型和指定类型不符合时, 值为类型的默认值!多编程多动手体会自己写的bug!
个人体会,少用fmt.Scanf(),不会分析,很容易跳到坑里,比如为啥输入参数绑定不对!很可能是回车换行符导致的!
二、字符串的处理
// strconv包,字符串和其他类型的相互转换
strconv.Itoa(int) // int -> string
strconv.Atoi(str) // string -> int
strconv.ParseInt(str, , ) // str->int 可以指定进制、类型.还有float\bool等
strconv.FormatInt(int, , ) // int->str。还有其他float等函数
// strings包,字符串的查找
strings.IndexByte(str, byte) // 查找字符串中字符的第一个位置。LastIndexByte是最后一个
strings.Index(str,str2) // 查找子串str2的第一个位置
// 字符串分割
strings.Splie(str, str2) // 将str按str2作为分隔符进行分割,返回字符串切片
// 大小写切换
strings.ToLower(str) // string全部转为小写
strings.ToUppe(str) // str全部转为大写
// 字符串删除
strings.Trim(str, str2) // 将str中首位包含的str2全部删除
// 强制类型转换
x := []rune(str) // 字符串转rune切片
str := string(x) // rune切片转为字符串
三、排序
// 升序
sort.Ints([]int) // 对int类型的切片升序排序
sort.Float64s([]float64)
sort.Strings([]int)
sort.Reverse() // 进行反转