• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go学习笔记

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

最近使用golang刷题,新语言还是有很多细节和C++不一样的点,golang为了保持语言的简洁可读性,少了很多工具性语法,对于C++ er而言初期真坑!入门容易,熟练还是得多写代码。

1. 缺少三目运算符 ?:

官方FAQ给出的解决方法是最low的if串联,go语言不具备C++的泛型和重载功能。

目前能搞定的解法,就是自己实现一个内联函数。

Go语言中可以模拟一个更普通的函数(If 的首字母大写,是函数名,不是 if 关键字):

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)

有几个关键点:

  • Go不支持运算符重载,因此需要先将 a<b 在函数外转换为 bool 条件
  • Go不支持泛型,只能用 interface{} 模拟
  • 返回的类型安全需要用户自己保证,.(type) 的类型必须匹配
  • interface{} 是运行时泛型,性能没有编译时泛型高

2 类型转换----go不存在隐式类型转换功能,必须明确的进行显式类型转换(为了类型安全)

参考链接

变量类型转换的基本格式如下:

<变量A>[:] = <变量A的类型>(<变量B>)
var a int
var f float32 = 3.14
a = int(f)
b := int(f) + 1
View Code

如果是已经定义的变量,可以省略:,否则不能省略。

类型的兼容性:

 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

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Go语言基础之9--指针类型详解发布时间:2022-07-10
下一篇:
mac下配置go基本环境变量参数发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap