获得徽章 0
- 在 Go(Golang)中,**数据类型**分为两大类:
- **值类型(Value Types)**
- **引用类型(Reference Types)**
理解这两类的区别非常重要,因为它直接影响到赋值、参数传递和内存管理的行为。
---
## 📘 一、引用类型(Reference Types)
在 Go 中,**以下四类是引用类型**:
| 类型 | 说明 |
|------|------|
| `slice`(切片) | 对底层数组的引用。多个切片可以共享同一个底层数组。 |
| `map`(映射) | 类似哈希表,内部实际是一个引用结构。复制 map 变量时,只会复制引用。 |
| `channel`(通道) | goroutine 之间通信的引用类型。复制 channel 变量不会复制底层通道。 |
| `function`(函数) | 函数类型的变量实际上是指向函数体的引用。 |
---
### 1. **slice**
切片由三部分组成:
- 指针(指向底层数组)
- 长度(len)
- 容量(cap)
```go
a := []int{1, 2, 3}
b := a // b 引用了同一个底层数组
b[0] = 99
fmt.Println(a[0]) // 输出 99,说明两者共享底层数据
```
---
### 2. **map**
`map` 是一个引用类型。它内部使用哈希表实现,但变量本身只是对底层哈希结构的引用。
```go
m1 := map[string]int{"x": 1}
m2 := m1
m2["x"] = 100
fmt.Println(m1["x"]) // 输出 100
```
---
### 3. **channel**
`channel` 用于 goroutine 间通信。复制通道变量不会创建新的通道。
```go
ch1 := make(chan int)
ch2 := ch1
go func() {
ch2 <- 10
}()
fmt.Println(<-ch1) // 输出 10,说明 ch1 和 ch2 引用了相同通道
```展开评论2 - 评论4
- VALL-E X 是一个多语言文本转语音(TTS)模型,最初由微软发布,当时的 demo 效果非常让人惊艳,这个模型可以识别一小段上传音频的特征,然后生成新的语音,可以达到以假乱真的程度。可惜微软没有把 VALL-E X 开源,但是今天这个 repo 复现并开源了 VALL-E X,同时也支持了中文,大家可以戳 demo 感受一下:
demo:plachtaa.github.io
GitHub:github.com
展开评论5 - 大模型顶级群聊中关于幻觉的有趣观点:华深智药创始人&CEO 彭健表示,大模型带来的幻象(Hallucination)对药物设计这样的 AI for Science 领域可能是有益的,某种程度上,所谓幻觉在某些领域就是智能的意义所在,因为这可以帮助设计出人想不到的蛋白质组合方案。26
- 终于到周五了!打起精神来看看今天的项目吧~今天推荐的是 SandDance,一个微软开源的数据可视化库,它使用单元可视化,将数据库中的行一对一映射到屏幕中。在进行数据交互时,视图可无缝平滑过渡,展示效果炫酷。
hellogithub.com【想做一个不一样的数据展示项目嘛?当然要多多尝试啦~微软出品,我觉得行!】
展开117