go指针逃逸对结构体元素集合法(增法)
例子1
package main
import (
"awesomeProject/logger"
"fmt"
"github.com/opencontainers/runtime-tools/filepath"
"os"
)
type Goods struct {
ID uint
MonTs string
}
func Mkfile() {
filepaht := filepath.Join(os.TempDir(), "nginx")
if _, err := os.Stat(filepaht); os.IsNotExist(err) {
err = os.MkdirAll(filepaht, 0644)
if err != nil {
logger.DefaultLogger.Errorf("%v", err)
}
}
}
func NewGoods(id uint) *Goods {
return &Goods{ID: id}
}
func (g *Goods) SetMontsAdd(m string) *Goods {
g.MonTs = m
return g
}
func main() {
g := NewGoods(100).SetMontsAdd("TE")
fmt.Println(g) //{100 TE}
}
例子2
package main
import (
"awesomeProject/logger"
"fmt"
"github.com/opencontainers/runtime-tools/filepath"
"os"
)
type Goods struct {
ID uint
MonTs string
}
func Mkfile() {
filepaht := filepath.Join(os.TempDir(), "nginx")
if _, err := os.Stat(filepaht); os.IsNotExist(err) {
err = os.MkdirAll(filepaht, 0644)
if err != nil {
logger.DefaultLogger.Errorf("%v", err)
}
}
}
func (g *Goods) SetId(id uint) *Goods {
g.ID = id
return g
}
func (g *Goods) SetMonts(m string) *Goods {
g.MonTs = m
fmt.Printf("%T\n", g)
return g
}
func main() {
var g Goods //或者var g = &Goods{}
g.SetId(100).SetMonts("test")
fmt.Println(g) //{100 test}
}
例子3
package main
import (
"awesomeProject/logger"
"fmt"
"github.com/opencontainers/runtime-tools/filepath"
"os"
)
type Goods struct {
ID uint
MonTs string
}
func Mkfile() {
filepaht := filepath.Join(os.TempDir(), "nginx")
if _, err := os.Stat(filepaht); os.IsNotExist(err) {
err = os.MkdirAll(filepaht, 0644)
if err != nil {
logger.DefaultLogger.Errorf("%v", err)
}
}
}
func (g *Goods) SetId(id uint) uint {
g.ID = id
return g.ID
}
func (g *Goods) SetMonts(m string) string {
g.MonTs = m
return g.MonTs
}
func main() {
var g *Goods //(改为var g Goods 或者var g = &Goods{})
g.SetId(100)
g.SetMonts("test")
fmt.Println(g)
} // 用var g *Goods 报错 runtime error: invalid memory address or nil pointer dereference
分类:
GO
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2021-12-04 日志管理系统GRAYLOG的集群部署
2021-12-04 vmware DRS
2021-12-04 vmware vcsa安装
2020-12-04 find文件获得绝对文件路径绝对值
2020-12-04 Tomcat和JVM的性能调优总结
2019-12-04 istio 简介
2018-12-04 二进制手动部署kubernetes 1.10.10