zoukankan      html  css  js  c++  java
  • go学习笔记

    最近使用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

  • 相关阅读:
    HMM (隐马尔可夫) 推导 (上)
    图模型初识
    K-means 和 EM 比较
    EM-高斯混合模型
    EM算法-完整推导
    EM算法直观认识
    pandas 之 时间序列索引
    K-Means 算法
    接口。
    第一册:lesson ninety-nine。
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/10998528.html
Copyright © 2011-2022 走看看