绑定方式
func(a 结构体名称)方法名(){
}
**不能为基础类型绑定**
![](https://img.kancloud.cn/9e/59/9e59adbf27538abbf1dd78101e01dd9a_968x473.png)
```
package main
import (
"encoding/json"
"fmt"
)
type user struct {
Password string
Nickname string
}
//值传递,无法实际改变值
func (u user) modifyPassword(newP string) bool {
u.Password = newP
fmt.Println("modifyPassword=>", u.Password)
return true
}
//地址传递,可以实际改变值
func (u *user) modifyPasswordPtr(newP string) bool {
u.Password = newP
fmt.Println("modifyPasswordPtr=>", u.Password)
return true
}
func main() {
u := user{
Password: "123",
Nickname: "123123",
}
data, err := json.Marshal(u)
if err != nil {
fmt.Println("json encodeing err", err)
return
}
fmt.Println(string(data)) //JSON打印struct
fmt.Println("更改前的值", u.Password)
u.modifyPassword("abc")
fmt.Println("1、更改后的值", u.Password)
u.modifyPasswordPtr("def")
(&u).modifyPasswordPtr("def")//上下等价,上面是编辑器底层优化后的写法
fmt.Println("2、更改后的值", u.Password)
}
```
![](https://img.kancloud.cn/24/ca/24ca7c9566a6b9053f536994fc28b3a7_328x142.png)
- 数据类型
- 数组array
- 切片slice
- 字符串string
- map
- 结构体struct
- 方法func
- 匿名结构体(继承)
- 字段别名
- 接口interface
- 常量
- 基础语法
- 循环for
- 遍历
- 函数func
- defer
- 异常处理error
- 访问范围
- 包
- 类型断言
- 文件
- 打开文件
- 读取文件
- 写文件
- 判断是否存在
- 拷贝文件
- JSON
- 序列化
- 反序列化
- 命令行
- 杂项
- Windows下配置加速
- 相关链接
- 占位符
- 随机数rand
- 单元测试
- goroutine
- 并发和并行
- 协程和主线程
- MPG模式
- 设置CPU数量
- 全局互斥锁
- 管道
- 示例1
- 示例2
- select
- 异常捕获
- 反射
- 示例
- 示例-改变值
- 网络编程
- TCP编程
- 示例一
- redis