go - 使用地图、切片或通道类型进行类型安全
问题描述
我想知道为什么这段代码在 go 中编译。我预计会出现编译器错误,例如字符串:
package main
import (
"fmt"
)
type myMap map[string]int
type mySlice []int
type myChan chan int
type myString string
func main() {
var mm myMap
var m map[string]int
m = mm // fine, but expected compiler error
var ms mySlice
var s []int
s = ms // same with slices
var mc myChan
var c chan int
c = mc // or channels
var mstr myString
var str string
// str = mstr // error, as expected
fmt.Printf("%T %T %T %T %T %T %T %T\n", mm, m, ms, s, mc, c, mstr, str)
}
Playground
为什么我没有得到与那些特殊的“引用类型”映射、切片和chan 的类型不匹配错误?
解决方案
推荐阅读
- python - TypeError:“枚举”类型的对象没有 len()
- android - Android WebView 无法加载 URL
- azure - 如何在 DataFactory 中获取 CSV 的第一行和第一列值?
- r - 使用 rChart 包中的 nplot 时如何将标签添加到 x 轴
- angular - Angular 8:将表单标记为从父组件触摸
- flutter - sweepGradient 终点没有动画
- javascript - 我正在尝试在 electronjs 上打印页面,但是当我按照复制代码时它不会打印或给出任何错误
- c# - 使用 C# 从 Outlook 2016 电子邮件项目捕获或导入收件人、发件人、主题和电子邮件正文
- .net - 如何在特定应用程序上禁用 BrotliCompressionModule
- sql - 如何获取 PostgreSQL 表中的相关数据?