代码改变世界

golang语法速记

  youxin  阅读(60)  评论(0编辑  收藏  举报

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/

 

相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
历史上的今天:
2013-08-21 冒泡排序和直接选择排序详解
2013-08-21 回溯法求解哈密顿回路问题
2012-08-21 css position
2012-08-21 little box:three column
2012-08-21 little box: two box
2012-08-21 eric书:text属性
2012-08-21 eric书:css继承
点击右上角即可分享
微信分享提示