1:不同包的调用:
src下创建一个hello包,下面创建一个add.go package hello import "fmt" func Add(){ fmt.Println("hello") }
Add方法首字母大写,可以让方法可以被其他的包调用
在src下的创建了一个test.go
package main import ( "./hello" "fmt" ) func main() { // %d 表示整型数字,%s 表示字符串 var stockcode=123 var enddate="2020-12-31" var url="Code=%d&endDate=%s" fmt.Printf(url,stockcode,enddate) fmt.Println() hello.Add() }
执行后
在这里遇到了一个小错误:就是先import的fmt后写的"./hello"
Imports are not sorted
点击那个蓝色的字就可以调整顺序
顺便查了一下go的import的一些知识点:
1:当两个包import的名字一样时,可以将一个包的名字重命名:
import ( dhello "./ddd/hello" "./hello" "fmt" )
这里我的ddd下的hello与hello重名,就该为了dhello
2:import 可以单行导入,也可以多行导入
import dhello "./ddd/hello" import "./hello" import "fmt"
3:加个. 在包前面加个点,就可以不用写包名,直接在下面调用方法:
package main import dhello "./ddd/hello" import ."./hello" import ."fmt" func main() { // %d 表示整型数字,%s 表示字符串 var stockcode=123 var enddate="2020-12-31" var url="Code=%d&endDate=%s" Printf(url,stockcode,enddate) Println() Add() dhello.Ddd() }
4:如果暂时不使用该包,可以使用_将改包隐藏起来
2:同一路径下的调用
比如我这里digui和fbnq在同一个路径下
在fbnq的文件里:
package main func fbnq(n int)(result int){ if (n >1){ result=fbnq(n-2)+fbnq(n-1) return result } return n }
而在递归的文件里:
package main import "fmt" //递归 func factor(n int)(result int){ if (n > 0){ result=n*factor(n-1) return result } return 1 } func main() { i:=16 fmt.Println("16的阶乘为",factor(i)) for i:=0;i<10;i++{ fmt.Printf("%d\t",fbnq(i)) } }
可以看到,在digui.go这个文件中并没有import,因为不需要导入这个路径。
但是如果执行会出现这个错误:
这是因为他只会build这个go文件,而这个go文件不存在fbnq这个函数,所以需要同时运行这两个文件:
打开终端页面,cd进入到相应路径后使用go run 两个文件名即可