go语言中,main函数调用其它文件夹下的函数

【Golang 基础系列五】Go 语言命令之go build 一、go build 主要用于编译代码 用于测试编译包,在项目目录下生成可执行文件(有main包) 二、go clean 用来移除当前源码包和关联源码包里面编译生成的文件 三、go fmt 四、go get 五、go install 主要用来生成库和工具 一、是编译包文件(无main包),将编译后的包文件放到 pkg 目录下($GOPATH/pkg) 二、是编译生成可执行文件(有main包... 阅读详情

需求,main.go调用httpServer.go下的Start方法。

结构目录:
在这里插入图片描述

main.go中import 需要引用的文件路径

package main

import (
	"fmt"
	// 这里的路径开头为项目go.mod中的module
	"engine_stability_platform/src/app/httpServer"
)
 
func main() {
	
	fmt.Println("main.....")
	httpServer.Start()
}

go.mod
这里要注意,如果不是根目录或者显示的是*.go的,说明go.mod的时候地址不对,把当前go.mod删除,然后进入到项目根目录,按照上述代码为engine_stability_platform,在控制台的终端,进入到该目录下

go mod init 模块名称

即

go mod init engine_stability_platform

然后会生成新的go.mod文件,内容如下所示

module engine_stability_platform

go 1.17

httpServer.go

package httpServer

import (
	. "fmt"
	"html"
	"net/http"
	"time"
)

var count int = 1
// 测试demo
func Task(w http.ResponseWriter, r *http.Request) {
	Printf(" ------ here is Task[%d] ------- \n", count)
	//defer r.Body.Close()
	// 模拟延时
	time.Sleep(time.Second * 2)
 
	Fprintf(w, "Response.No.%d: Your request is %q\n\n", count, html.EscapeString(r.URL.Path))
	count++
	answer := `{"status:":"OK"}`
	w.Write([]byte(answer))
}
 
func Task1(w http.ResponseWriter, r *http.Request) {
	Printf(" ------ here is Task1[%d] ------- \n", count)
	//defer r.Body.Close()
	// 模拟延时
	time.Sleep(time.Second * 2)
 
	Fprintf(w, "Response.No[%d]: Your request is %q\n\n", count, html.EscapeString(r.URL.Path))
	count++
	answer := `{"status:":"OK"}`
	w.Write([]byte(answer))
}
var server *http.Server

func Start() {
	Println("===== This is http server =====")
	mux := http.NewServeMux()
	mux.HandleFunc("/hello/world", Task)
	mux.HandleFunc("/hello/world1", Task1)
	// 启动静态服务
	http.Handle("/static/css/", http.FileServer(http.Dir("dist")))
    http.Handle("/static/js/", http.FileServer(http.Dir("dist")))

	if server != nil {
		// 避免重复start server 端口泄露
		server.Close()
	}
	// 设置服务器
	server := &http.Server{
		Addr: "127.0.0.1:8090",
		Handler: mux,
	}
	// 设置服务器监听端口
	server.ListenAndServe()
}

运行结果:
在这里插入图片描述
问题:

# command-line-arguments
./main.go:5:2: imported and not used: "engine_stability_platform/src/app/httpServer" as app
./main.go:13:2: undefined: httpserver
DIDI-C02G51DQQ05G:engine_stability_platform didi$ go run *.go
# command-line-arguments
./main.go:5:2: imported and not used: "engine_stability_platform/src/app/httpServer" as app
./main.go:13:2: undefined: httpserver
DIDI-C02G51DQQ05G:engine_stability_platform didi$ go run main.go
# command-line-arguments
./main.go:5:2: imported and not used: "engine_stability_platform/src/app/httpServer" as app
./main.go:13:2: undefined: httpServer
DIDI-C02G51DQQ05G:engine_stability_platform didi$ go run main.go
main.go:5:2: package engine_stability_platform/src/app/httpServer/httpServer is not in GOROOT (/usr/local/go/src/engine_stability_platform/src/app/httpServer/httpServer)

如果是在运行中出现以下类似问题,说明go.mod的时候地址不对,把当前go.mod删除,然后进入到项目根目录,按照上述代码为engine_stability_platform,在控制台的终端,进入到该目录下

go mod init 模块名称

既

go mod init engine_stability_platform

此时会生成一个新的mod文件,然后该文件的module就是根目录了

更多go mod命令使用,参考:https://blog.youkuaiyun.com/weixin_39689347/article/details/111215800

Golang(二):使用Go语言创建并运行一个万年Hello World、Go语言编码规范 一、Hello World 1、创建项目 GoLand下:new—》project—》 创建好以后,只是个空项目: 2、编辑运行/调试配置 点击 Configurations ,进入设置启动项的内容 选择 Go Build: 关于下面配置项的一些说明: Name:为配置信息项的名称,配置好后,显示这样: Run kind:设置为“Directory” Direc... 阅读详情

相关推荐

【Golang】关于Go语言中的包

Go语言中包的本质:文件夹,不同的文件夹可以存放不同的功能代码。 在Go语言中,每个源代码文件都必须属于一个包。包通常由一个或多个以.go为后缀的源文件组成,这些源文件通常存放在同一个目录下。 包的名称应该具有描述性,能够清楚地表达其功能。包名一般使用小写字母,并且和包所在的文件夹名保持一致。

景天科技苑 3万+

go语言详解-----包(package)引入

go 包引入 、 GOPATH 、 go mod

qq_41768644的博客 1337

概率论 知识图谱 + 实战案例解析

本文通过构建概率论知识图谱,系统梳理了从随机试验、概率、条件概率到随机变量与分布的核心概念及其内在联系。结合朴素贝叶斯分类器和蒙特卡洛模拟等实战案例,深入解析了条件概率、独立性及大数定律等理论如何应用于机器学习与实际问题求解,旨在帮助读者建立结构化思维,将理论有效转化为解决实际问题的能力。

weixin_29051193的博客 265

go语言之包的调用

go包之间的调用

m0_64998696的博客 957

分布式推理服务(策略:数据并行、张量并行、流水线并行、专家并行)技术分析

摘要:分布式推理突破单GPU内存和算力限制,支持大模型部署。四种核心策略包括: 数据并行:复制模型拆分数据,提升吞吐但内存效率低; 流水线并行:模型分阶段执行,支持超大模型但存在计算气泡; 张量并行:拆分层内矩阵运算,延迟低但通信开销大; 专家并行:动态激活MoE模型专家,计算高效但路由复杂。实际应用中常组合策略(如3D并行),需权衡模型规模、硬件条件与性能目标。

技术引领业务创新 940

h5支付不能打开支付宝 ios_iOS支付宝H5支付无法返回APP解决方案

本文前大段在讲楼主是如何解决这个问题的,以及中间遇到的麻烦。赶时间的同学可以直接看最后的 最终解决方案。在讨论之前,我们先看看官方文档上的一句话:注意:在iOS系统中,唤起支付宝App支付完成后,不会自动回到浏览器或商户APP。用户可手工切回到浏览器或商户APP;支付宝H5收银台会自动跳转回商户return_url指定的页面。what? 官方直接跟我们说GG了?楼主不甘心,还是想尝试一下。借鉴之前...

weixin_39864101的博客 854

说说Go语言的main函数

符合要求的main函数不能带参数符合要求的main函数不能定义返回值符合要求的main函数所在的包必须指定package为main包才能正常执行符合要求的main函数中可以使用flag包来获取和解析命令行参数首先前两个比较好理解,在这里就不多说了,第三个的意思就是:即使main函数所在的目录名称不是main,但是将package指定为main就可以正常执行: 最后一个,如何使用flag包来获取和解析命令行参数,我们演示下: 输入的内容: OK,关于go语言main函数的分享就到这里~...

做兴趣使然的Hero 3130

冰河木马实验(V8.4)

简述: 百科词条 冰河木马开发于1999年,跟灰鸽子类似,在设计之初,开发者的本意是编写一个功能强大的远程控制软件。但一经推出,就依靠其强大的功能成为了黑客们发动入侵的工具,并结束了国外木马一统天下的局面,跟后来的灰鸽子等等成为国产木马的标志和代名词。 冰河的服务器端程序为G-server.exe,客户端程序为G-client.exe,默认连接端口为7626。其中攻击者使用G-client.e...

野原新之助 1万+

【GoLang】不在GOROOT目录的情况下,如何让不同的go文件之间可以调用自定义的函数

当执行文件main.go想要调用其他文件的函数,但是该文件选择不在GOROOT\src目录的情况下,如何实现下面的目标 目标一:实现跨包情况下,两个不同文件之间的函数调用 目标二:实现在同一级目录下,不同文件之间的函数调用

kokool的博客 2402

RFC 字符码转换深度解析:Unicode、非 Unicode 与 MDMP 系统的协奏

老版本 MDMP 系统不上传自定义映射时,Unicode 端会落回“预配置列表”。列表里可见西欧 1100、日文 8000、中文 8400 等经典编号。若需强制覆写映射,可在 SM59 ➡Unicode页签启用,或直接勾选作为兜底。字符编码问题常“潜伏”多年,一旦旧系统升级或新增语种便集中爆发。掌握 RFC code page 转换机理、灵活运用 SM59 选项、在早期对 LANG 字段和字段长度进行治理,是根治乱码与 short dump 的关键。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 222

18、公开可用的PPG数据库介绍

本文介绍了多个公开可用的PPG(光电容积描记)数据库,包括PPG-BP数据库、MIMIC II波形数据库、运动期间手腕PPG数据库以及指尖PPG与呼吸数据库等。这些数据库提供了丰富的生理信号数据,适用于动脉血压检测、呼吸频率估计、运动干扰去除以及基于PPG的生物特征识别等研究。每个数据库的数据来源、受试者信息、信号特点和下载方式均有详细介绍,并展示了如何利用这些数据库进行信号分析和算法评估。

salt的博客 387

go语言如何调用其他包中的函数

go语言如何调用其他包中的函数

qq_54650406的博客 3726

2026年经典爬虫案例专栏|第17篇:学术论文爬虫实战——知网与万方数据采集

字段名说明数据类型title论文标题字符串authors作者列表列表abstract摘要字符串keywords关键词列表列表journal发表期刊字符串year发表年份整数volume卷号字符串issue期号字符串pages页码范围字符串citations引用次数整数downloads下载次数整数doiDOI编号字符串url论文链接字符串学术论文爬虫是科研工作的重要辅助工具,可以帮助研究人员高效地收集和管理论文数据。

2201_76125261的博客 1061

Go 导入包内其他文件的函数

Go 语言的package 在同一个文件夹中,所有文件的package名称都一样,文件的函数可以自由调用 但是有一个前提条件,就是 go build 文件夹路径,而不是go build xx.go 否则就会提示报错,编译失败 .\HTTP_server.go:16:5: undefined: GetOutput 改为 go build -o ./main.exe D:\go\project\web_server , 就不会报错了 ...

Rao的博客 2873

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

关于go中的package和main关系

关于go中的package和main关系

xinbaobaoer的博客 2万+

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

自学golang【第三章:第一个go语言程序】使用goland创建第一个go程序,main函数与init函数,使用go实现运行windows命令,实现cmd的数据输出

目录 一,使用goland创建第一个go程序 1,打开goland,点击new project后,选择路径,点击creat 2,点击以下目录输入main 3,输入以下代码后点击run 4,这样我们就成功运行出了第一个go程序 二,main函数与init函数 三,使用go实现运行windows命令 四,实现cmd的数据输出 一,使用goland创建第一个go程序 1,打开goland,点击new project后,选择路径,点击creat 2,点击以下目录输入main 3,输入

立志冲海大 1754

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Go后端开发 -- main函数 & 变量 & 常量 & 函数

常量是一个简单值的标识符,在程序运行时,不会被修改的量。常量中的数据类型只可以是布尔型、数字型(整数型、浮点型和复数)和字符串型。你可以省略类型说明符 [type],因为编译器可以根据变量的值来推断其类型。//显式类型定义//隐式类型定义:fmt.Println("面积为:", area)const (UNKNOW = 0FEMALE = 1MALE = 2数字 0、1 和 2 分别代表未知性别、女性和男性。常量可以用常量计算表达式的值。常量表达式中,函数必须是内置函数,否则编译不过。

kissland96166的博客 1712

Go语言内置类型和函数

go语言拥有一些不需要进行导入操作就可以使用的内置函数。他们有时可以针对不同类型进行操作,例如len,cap和append,或必须用于系统级的操作,例如:panic。因此,他们需要直接获得编译器的支持。

weixin_57023347的博客 1530

GO相同文件夹下相同package不同文件间的函数调用

如:需要在main.go中调用,test1.go中的函数。直接run main.go会报错如下 调用代码: test1.go package main import "fmt" func test0007() { fmt.Printf("AAAAAAAAAAAAAAAAAAAA") } main.go package main import "fmt" func main() { ...

Delphinidae 5673

第一个 Go 程序“hello,world“ 与 main 函数

所有 Go 代码都有自己隶属的包,在这里我们的“hello,world”示例的所有代码都在一个名为 main 的包中。main 包在 Go 中是一个特殊的包,通常导入路径的最后一个分段名与包名是相同的,这里很容易让人误解 import 声明语句中的“fmt”指的是包名,其实并不是这样的,只有 fmt.Println 函数调用一行中的“fmt”代表的则是包名。main 函数体中之所以可以调用 fmt 包的 Println 函数,还有最后一个原因,那就是 Println 函数名的首字母是大写的。

淘小欣的博客 781

1.golang-hello go之一个文件夹下面只有一个入口函数main

golang初级学习

weixin_46468790的博客 1130

go中main函数

/*  *  Copyright (C) Shuwen He 1201220707@pku.edu.cn   *  TEL  15010729356  *  go中main函数  */ main函数不能带参数 main函数不能定义返回值 main函数所在的包必须为main包 main函数中可以使用flag包来获取和解析命令行参数  ...

6326

golang学习(package 和 main 函数)

在Go语言中,和java的main是有所区别的,具体区别如下:   在java中,任何一个java文件都可以有唯一一个main方法当做启动函数   在go中,则是任何一个package中,都可以有唯一一个带有main方法的go文件   也就是说,一个package下,只能有一个main方法,不管是在那个文件中,但是只能有一个,这个package是按照文件夹区分的,举个栗子:   ...

boshuzhang的专栏 6949

Golang package 包的使用原理方法 调用其他包中的函数及参数

示例代码: root/Main.go package main // 要使用其他包需要 import 引入 import p1 "./Pak1" func main() { // 不同一个文件夹(包)内的函数需要使用包名.号调用 p1.Bar1FuncPrint() } root/Pack1/func1.go package p1 import "fmt" // Bar1FuncP...

YDOOK 6810

【Golang入门】二、Go语言快速开发

需求:开发一个hello.go程序,要求输出“hello world”。 采用VScode进行Golang的开发,因此这一系列博客的代码均在VScode编译器上编译实现。 这里我们就先了解一下在VScode里如何创建——编写——编译Go程序。 一、步骤 1. 编写源代码 注意:Go文件路径中不要出现中文或特殊字符。 在开发 Go 程序或者项目时,首先需要创建相应的目录结构,需要注意一点:我们在【Golang入门】一、搭建Go开发环境 中配置开发环境时,环境变量 GOPATH 的目录是 D:\Gopr.

markscientist的博客 2302
上一篇: go并发编程之一:并发与并行的区别、go语言并发优势
下一篇: go读取静态文件.html、css、js404问题
java_xxxx
博客等级 码龄9年 127粉丝 99原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值