golang-阅读雨痕大神的Go语言学习笔记的心得
- 第一章 概述
-
- 1.1 go与java中的局部变量初始化问题
- 1.2 golang中实现生产者消费者模型,利用管道进行数据通信
- 第二章 类型
-
- 2.1 类型推断的使用注意
- 2.2 常量与变量的区别
- 2.3 常量的值类型省略
- 2.4 go的枚举
- 2.5 常量和变量到底有什么区别
- 2.6 go 基本类型
- 2.7 go 引用类型
-
第一章 概述
1.1 go与java中的局部变量初始化问题
package main
import "fmt"
func main() {
var x int32
fmt.Println(x)
}
public static void main(String[] args) {
int x = 1;
System.out.println(x);
}
1.2 golang中实现生产者消费者模型,利用管道进行数据通信
package main
import "fmt"
func consumer(data chan int, done chan bool) {
for x := range data {
fmt.Println("rev", x)
}
done <- true
}
func provider(data chan int) {
for i := 0; i < 4; i++ {
data <- i
}
close(data)
}
func main() {
done := make(chan bool)
data := make(chan int)
go consumer(data, done)
go provider(data)
<- done
}
第二章 类型
2.1 类型推断的使用注意
func main() {
x := 100
x, y := 10, 5
}
2.2 常量与变量的区别
func main() {
const x = 1
}
2.3 常量的值类型省略
func main() {
const (
x = 1
y
z
m
)
fmt.Println(m)
}
2.4 go的枚举
const (
x = iota
y
z
)
const (
_, _ = iota, iota * 10
a, b
c, d
)
const (
a = iota
b
c = 100
d
e = iota
f
)
const (
a = iota
b float32 = iota
c = iota
)
2.5 常量和变量到底有什么区别
var z = 0x100
const y = 0x200
func main() {
fmt.Println(&z, z)
fmt.Println(&y, y)
}
const x = 100
const y byte = x
const a int = 100
const b byte = a
2.6 go 基本类型

2.7 go 引用类型
所谓引用类型特指slice、map、channel这三种预定义类型
2.7.1 go中new与make的区别
new按照指定类型长度分配零值内存,返回指针,并不关心内部构造和初始化方式。
而引用类型必须由make函数进行创建,编译器会将make转换为目标类型专用的创建函数,以确保完成全部内存分配和相关属性初始化。
type Point struct {
x int
y int
}
func main() {
var *p Point
p = new(Point)
}
func main() {
tempMap := make(map[string]int).
}