• golang语法速记


    Golang语言中存在一个关键字type,type又有两种使用方式,一种是类型别名,一种是类型定义。

    GoLang1.9后对內建定义类型使用了新的写法:

    type NewName = Type

    这个NewName只是Type的别名。NewName和Type是一致的类型。

    而类型定义,则是会产生新的类型。虽然新类型和旧类型是一样的类型。但会被认为是不同的类型名字。

    type NewName Type

    type Student struct {
    name String
    age int
    }

    type Teacher Student

    相当于定义了一个新的Teacher类型,和下面的代码是等价的。虽然两个类型内存布局完全一样,但是从概念上来说,他们是完全不同的两个类型,不能相互兼容。
    type Teacher struct {
    name String
    age int
    }

    类型别名这个功能非常有用,鉴于go中有些类型写起来非常繁琐,比如json相关的操作中,经常用到map[string]interface {}这种类型,写起来是不是很繁琐,没关系,给它起个简单的别名!这样用起来爽多了。
    type strMap2Any = map[string]interface {}

    Go 报错:变量未使用 —— xxx declared and not used

    下面的程序,你可能注意到了一个问题:未使用的变量 n 编译会报错。

    func main() {
    var n int // “n 已声明且未使用”
    n = 5 // 这也没用,还是会编译报错
    }
    ../main.go:2:6: n 已声明且未使用
    这是 Go 语言的一个特性

    存在未使用的变量可能表明存在错误 […] 为了项目的构建速度和便利性以及程序的可读性,Go 语言拒绝使用未使用的变量和包。Go FAQ:我可以停止对未使用的变量 / 导入的投诉吗?](golang.org/doc/faq#unused_variable...)

    但是 Go 语言,允许使用未使用的全局变量和函数参数。

    解决方案:
    如果你不想删除或注释掉一个未使用的变量或者包,则可以添加一个虚拟分配。

    func main() {
    var n int
    n = 5
    _ = n // n 现在被使用了
    }

    ————————————————

    golang中数组作函数参数,默认值传递,修改的数据不会影响原始数组,如要实现,可以

    将数组以指针接受

    使用slice

    package main
    import "fmt"
    func arrayChange(a [3]int) {
        a[2]  =3
        fmt.Println(a)
    }
    func main() {
        var a  = [...]int{3,4,5}
        arrayChange(a)
        fmt.Println(a)
    }
    //输出
    [3 4 3]
    [3 4 5]
    并不会改变原数组,
    可使用指针
    func arrayChange(a *[3]int) {
        a[2]  =3
        fmt.Println(a)
    }
    func main() {
        var a  = [...]int{3,4,5}
        arrayChange(&a)
        fmt.Println(a)
    }
    或slice
    func arrayChange(a []int) {
        a[2]  =3
        fmt.Println(a)
    }
    func main() {
        var a  = []int{3,4,5}
        arrayChange(a)
        fmt.Println(a)
    }

    https://www.bbsmax.com/A/x9J2QOMKz6/

  • 相关阅读:
    AmazonS3 替换HDFS 方案
    SQL Server 内存管理
    SQL Server I/O 问题的诊断分析
    共享内存 设计原理-shm
    机器学习经典算法笔记-Support Vector Machine SVM
    ACGAN 论文笔记
    CGAN 论文笔记
    《Image Generation with PixelCNN Decoders》论文笔记
    《Iterative-GAN》的算法伪代码整理
    《Deep Learning Face Attributes in the Wild》论文笔记
  • 原文地址:https://www.cnblogs.com/youxin/p/16611243.html
Copyright © 2020-2023  润新知