美文网首页
Go语言学习

Go语言学习

作者: HeartLeo | 来源:发表于2018-05-10 12:50 被阅读0次

    Go 是一个开源的编程语言,它能让构造简单、可靠且高效的软件变得容易


    Go 语言特色:

    • 简洁、快速、安全
    • 并行、有趣、开源
    • 内存管理、快速编译

    1. 支持如下两种方式来加载自定义包:
    • 相对路径:
      import "./自定义包路径"
    //根据相对路径标识导入自定义包
    import (
        "./test"
    )
    
    • 绝对路径 :
      import "自定义包路径"
    //导入src下的自定义包
    import (
        "Test/test"
    )
    

    1. 特殊的import方式:
    • 点操作:
      当使用所导入包的函数时,点操作可以省略包名,直接调用函数
    import (
        . "Test/test"
    )
    
    • 别名操作:
      为复杂的包名创建简单别名,方便记忆和调用
    import (
        T "Test/test"
    )
    
    • _ 操作:
      只调用引入包的init()函数,不能通过包名来调用其它函数
    import (
        _ "Test/test"
    )
    

    1. 包的导入流程:

    4.蓄水池抽样法 - Reservoir Sampling

    //ReservoirSampling - A function to randomly select k items from stream[0..n-1]
    func ReservoirSampling(stream []int, n int, k int) {
        //reservoir is the output slice
        reservoir := make([]int, k, k)
        // Initialize it with first k elements from stream
        for i := 0; i < k; i++ {
            reservoir[i] = stream[i]
        }
        // Use a different seed value
        rand.Seed(time.Now().Unix())
        // Iterate from the (k+1)th element to nth element
        for j := k; j < n; j++ {
            // Pick a random index from 0 to j
            r := rand.Intn(j + 1)
            // If the randomly picked index is smaller than k, replace the element present at the index with new element from stream
            if r < k {
                reservoir[r] = stream[j]
            }
        }
        //Print the output slice
        fmt.Println(reservoir)
    }
    

    相关文章

      网友评论

          本文标题:Go语言学习

          本文链接:https://www.haomeiwen.com/subject/nxjzrftx.html