在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
最近使用golang刷题,新语言还是有很多细节和C++不一样的点,golang为了保持语言的简洁可读性,少了很多工具性语法,对于C++ er而言初期真坑!入门容易,熟练还是得多写代码。 1. 缺少三目运算符 ?: 官方FAQ给出的解决方法是最low的if串联,go语言不具备C++的泛型和重载功能。 目前能搞定的解法,就是自己实现一个内联函数。 Go语言中可以模拟一个更普通的函数( func If(condition bool, trueVal, falseVal interface{}) interface{} { if condition { return trueVal } return falseVal } a, b := 2, 3 max := If(a > b, a, b).(int) println(max) 有几个关键点:
2 类型转换----go不存在隐式类型转换功能,必须明确的进行显式类型转换(为了类型安全) 变量类型转换的基本格式如下: <变量A>[:] = <变量A的类型>(<变量B>) var a int var f float32 = 3.14 a = int(f) b := int(f) + 1 如果是已经定义的变量,可以省略:,否则不能省略。 类型的兼容性: 3 golang整数的最大和最小值 go没有最大和最小值的常量值,需要自己实现=_=,基于位运算进行操作。 //无符号整数 const UINT_MIN uint = 0 const UINT_MAX = ^uint(0)//18446744073709551615 //有符号整数 /*根据补码,其最大值二进制表示,首位0,其余1*/ const INT_MAX = int(^uint(0) >> 1) /*根据补码,其最小值二进制表示,首位1,其余0*/ const INT_MIN = ^INT_MAX -9223372036854775808 9223372036854775807
|
请发表评论