golang run时报undefined错误【已解决】

简介: golang run时报undefined错误【已解决】

@[toc]

问题

在golang中同一个包中有两个文件,分别为main.go 和 server.go,main函数在main.go中,并且在main函数中引用了server.go中的一个结构体

运行时报错:
在这里插入图片描述

PS E:\myworkpace\goworkpace\go_im> go run .\main.go
# command-line-arguments
.\main.go:9:12: undefined: NewServer

原因

go run: 会先进行编译操作,而在此处的编译它只会以这个main.go为准,导致引用其他文件出现找不到的情况

go build:不一样,它会自动查找引用文件并打包


解决

方法一:

go run main.go a.go

方法二:

go run *.go

方法三:

go build

在这里插入图片描述

代码案例

main.go

package main

import "fmt"

func main() {
    fmt.Println("starting")
    server := NewServer("127.0.0.1", 8888)
    server.Start()
}

server.go

package main

import (
    "fmt"
    "net"
)

type Server struct {
    Ip   string
    Port int
}

// 创建一个server的接口
func NewServer(ip string, port int) *Server {
    server := &Server{
        Ip:   ip,
        Port: port,
    }
    return server
}

func (s *Server) Handler(conn net.Conn) {
    // 当前连接的业务
    fmt.Println("连接建立成功!")
}

// 启动服务器的接口
func (s *Server) Start() {
    // socket listen
    listener, err := net.Listen("tcp", fmt.Sprintf("%s:%d", s.Ip, s.Port))
    if err != nil {
        fmt.Println("net.Listen err: ", err)
        return
    }
    // close listen socket
    defer listener.Close()

    for {
        // accpet
        conn, err := listener.Accept()
        if err != nil {
            fmt.Println("listener accept err: ", err)
            continue
        }
        // do handler
        go s.Handler(conn)
    }

}

go.mod

module javapub.net/go_im

go 1.18

项目初始化方式,

go mod init [module]


目录
相关文章
|
8月前
|
Go
golang run时报undefined错误【已解决】
golang run时报undefined错误【已解决】
265 1
|
JavaScript 前端开发 测试技术
npm run dev启动报错:TypeError: Cannot read property 'upgrade' of undefined
npm run dev启动报错:TypeError: Cannot read property 'upgrade' of undefined
275 0
|
JavaScript
vue npm run build打包报错:Class extends value undefined is not a constructor or null
vue npm run build打包报错:Class extends value undefined is not a constructor or null
1097 0
vue npm run build打包报错:Class extends value undefined is not a constructor or null
|
8月前
|
前端开发 小程序 JavaScript
微信小程序-Unhandled promise rejection TypeError: Cannot read property ‘get‘ of undefined
微信小程序-Unhandled promise rejection TypeError: Cannot read property ‘get‘ of undefined
|
6月前
|
存储 JavaScript 前端开发
成功解决:Cannot read properties of undefined (reading ‘commit‘)
这篇文章提供了解决Vuex中"Cannot read properties of undefined (reading 'commit')"错误的两种方法:检查模板中的数据属性是否存在,以及确保在Vue实例中正确挂载了store对象。
成功解决:Cannot read properties of undefined (reading ‘commit‘)
|
6月前
|
定位技术 Apache
Echarts——Invalid geoJson format Cannot read property 'length' of undefined
Echarts——Invalid geoJson format Cannot read property 'length' of undefined
128 0
|
6月前
|
JavaScript
VUE——filemanager-webpack-plugin报错TypeError: Cannot read property 'isFile' of undefined
VUE——filemanager-webpack-plugin报错TypeError: Cannot read property 'isFile' of undefined
122 0
|
6月前
|
前端开发 JavaScript
VUE——Uncaught (in promise) TypeError: Cannot read property '__esModule' of undefined
VUE——Uncaught (in promise) TypeError: Cannot read property '__esModule' of undefined
142 0
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that
TypeError: Cannot set properties of undefined (setting ‘resdata‘),res定义数据出现的问题,定义的方法用this换成that
Cannot read properties of undefined (reading ‘row‘)
Cannot read properties of undefined (reading ‘row‘)

热门文章

最新文章