值类型和引用类型
值类型:int、float、bool、string、数组、结构体struct
引用类型:指针、切片slice、map、管道chan、interface
值类型在拷贝的时候是拷贝值,引用类型拷贝的是指针
```
type 结构体名称 struct{
field1 int
field2 string
Field3 float32//开头大写,可以被其他包访问
}
type user struct {
password string
Nickname string
Scores [5]float64//数组
ptr *int//指针
slice []int//切片
map1 map[string]string //map
}
var u1 user
var u2 user = User{...}//按顺序放字段
var u3 user = User{
password:"123",
Nickname:"123123",//与PHP不同,必须带逗号
}
var u4 *user = new(user)
(*u4).Nickname = "3"//标准写法
u4.Nickname = "abc"//等价于标准写法,为了使用方便底层特定设计
var u5 *user = &user{}
```
结构体别名会被认为新的数据类型,但是可以强制转换
> JSON输出
```
u := user{
password: "123",
Nickname: "123123",
}
u.password = "22333"
data, err := json.Marshal(u)//只能转换首字母大写的字段
if err != nil {
fmt.Println("json encodeing err", err)
return
}
fmt.Println(string(data))
//使用tag标签解决字段首字母大写的问题,Nickname->nickname
type user struct {
password string
Nickname string `json:"nickname"`
}
```
- 数据类型
- 数组array
- 切片slice
- 字符串string
- map
- 结构体struct
- 方法func
- 匿名结构体(继承)
- 字段别名
- 接口interface
- 常量
- 基础语法
- 循环for
- 遍历
- 函数func
- defer
- 异常处理error
- 访问范围
- 包
- 类型断言
- 文件
- 打开文件
- 读取文件
- 写文件
- 判断是否存在
- 拷贝文件
- JSON
- 序列化
- 反序列化
- 命令行
- 杂项
- Windows下配置加速
- 相关链接
- 占位符
- 随机数rand
- 单元测试
- goroutine
- 并发和并行
- 协程和主线程
- MPG模式
- 设置CPU数量
- 全局互斥锁
- 管道
- 示例1
- 示例2
- select
- 异常捕获
- 反射
- 示例
- 示例-改变值
- 网络编程
- TCP编程
- 示例一
- redis