导入包,程序清单如下:
package main
import(
"fmt"
)
func main(){
fmt.Println("Hello World!")
}
Go语言以package语句打头。main包是一种特殊的包,其特殊之处在于不能导入。对main包的唯一要求是,必须声明一个main函数,这个函数不接受任何参数且不返回任何值。简而易之,main包是程序的入口。
在main包中,可使用import声明来导入其它包。导入包后,可使用其中被导出的标识符。
安装第三方包:
要使用第三方库,必须像使用标准库一样使用import语句导入它。要使用第三方包,必须先使用命令go get安装它。
在终端,输入命令行如下:
go get github.com/golang/example/stringutil
运行结果如下:
这个问题很头疼。
输入代码如下:
package main
import(
"fmt"
"github.com/golang/example/stringutil"
)
func main(){
s:="ti esrever dna ti pilf nwod gniht ym tup I"
fmt.Println(stringutil.Reverse(s))
}
结果如下:
这个问题也很头痛。
通过微信群求助了,输入命令行如下:
export GOPROXY=https://goproxy.io,direct
输入命令行如下:
go get github.com/golang/example/stringutil
结果如下:
通过上面的代码,试一下运行结果如下:
输入命令行如下:
$GOPATH/src/github/golang/example/stringutil
再试一下代码的运行结果,还是不行的。
输入命令行:
go env -w GO111MODULE=auto
再次输入命令行:
go env |grep GO111MODUL
运行结果是:
GO111MODULE="auto"
在代码上运行结果如下:
I put my thing down flip it and reverse it
感谢一位网友的留言:
有空闲,从网上学习go modules。
管理第三方依赖:
更新项目的依赖,可在项目文件夹中执行如下命令:
go get -u
可只更新特定的包,如下:
go get -u github.com/spf13/hugo
可更新文件系统中所有的包
go get -u all
创建包:
一个简单的包,文件名temperature.go,程序清单如下:
package temperature
func CtoF(c float64)float64{
return (c*(9/5))+32
}
func FtoC(c float64)float64{
return (f-32)*(9/5)
}
对包进行测试,文件名temperature_test.go,程序清单如下:
package temperature
import("testing")
type temperatureTest struct{
i float64
expected Temperature
}
var CtoFtests=[]temperatureTest{
{4.1,39.38},
{10,50},
{-10,14},
}
var FtoCTests=[]temperatureTest{
{32,0},
{50,10},
{5,-15},
}
func TestCtoF(t *testing.T){
for _,tt:=range CtoFTests{
actual:=CtoF(tt.i)
if actual!=tt.expected{
t.Errorf("expected %v, actual %v", tt.expected, actual)
}
}
}
func TestFtoC(t *testing.T){
for _,tt:=range FtoCTests{
actual:=FtoC(tt.i)
if actual!=tt.expected{
t.Errorf("expected %v, actual %v", tt.expected, actual)
}
}
}
书上说:
其实上,输入go test,结果如下: