初识go语言

1、目录结构:

workspace
  |-- src
  |     |-- demo
  |     |     |-- .git
  |     |     |-- Godeps
  |     |     |     |-- _workspace
  |     |     |     |-- Godeps.json
  |     |     |-- hello.go
  |     |     |-- library
  |     |     |     |-- world.go
  |-- pkg
  |-- bin

https://github.com/zhouhaibing089/Blog/issues/5

2、 包:

可以理解为就是java的包,和java语言的包不同的是,go语言的包名和当前文件名可以不一样,同时一个项目默认有一个main包。需要注意的是在同一个目录下的.go文件的包名必须相同,所以我们完全可以让包名和目录名保持一致。

3、运行方式:

go语言和c、c++一样是编译型语言,所以正常来说他的运行过程应该是:源代码----编译------》可执行文件-----运行----》结果。当然除了这种运行方式,我们为了测试代码的方便还可以直接使用go run命令。

4、模块

go模块的存在意义就是组织、版本控制和依赖管理。模块提供了一种将相关的代码组织在一起的机制,并允许你明确指定项目的依赖关系。模块路径是一个唯一的标识符,用于标识你的项目。它可以是任何有效的 URL、域名或文件路径。通常情况下,建议使用互联网域名的倒置形式作为模块路径,以确保唯一性。例如,可以使用类似 example.com/m 的路径作为模块路径,其中 example.com 可以是你拥有的域名,m 是你项目的标识符。这样的模块路径可以用来唯一标识你的项目,并确保与其他模块路径的区分。当你运行 go mod init 命令时,你需要提供模块路径作为命令的参数。Go 将使用该模块路径来初始化一个新的模块,并生成一个 go.mod 文件,其中包含模块的路径和依赖项信息。
所以我们得出结论,应该在那个目录执行go mod init呢?答:项目根路径。
需要注意的是模块只在版本控制和依赖管理时起作用,并不影响代码的执行。

5、命令

go run 文件名  #编译并运行 Go 源文件。
#编译当前目录或指定的 Go 包。
go build
go build package/path
#编译并安装包或程序到工作区的 bin 目录或指定的目录。
go install
go install package/path
#下载并安装指定的包及其依赖。
go get package/path
#运行测试文件进行单元测试。
go test
go test package/path
#初始化模块并创建 go.mod 文件
go mod init module/path
#整理并更新模块的依赖关系
go mod tidy
#将依赖项复制到 vendor 目录中
go mod vendor
#下载依赖的模块到本地缓存
go mod download
#编辑模块的 go.mod 文件
go mod edit

6、分享一个坑

错误信息:

PS E:\code\goland\goproject\src\go_code\project1\main> go run main.go
# command-line-arguments
.\main.go:3:12: undefined: Cat

代码情况(main.go animal.go在同一目录下):
main.go:

package main
func main(){
	animal := Cat{
		Name: "xiaohua",
	}
	animal.Speak()
}

animal.go:

package main

import "fmt"

type Animal interface {
	Speak()
}
type Cat struct {
	Name string
}
type Dog struct {
	Name string
}

func (cat Cat) Speak() {
	fmt.Println(cat.Name+":喵喵")
}
func (dog Dog) Speak(){
	fmt.Println(dog.Name+":汪汪")
}


错误描述:笔者认为在同一个目录下,又是在同一个包内,所以他们的相互引用应该是没有什么问题的。问题就在于怎么运行了,使用build编译后运行都没什么问题,就是使用run的时候,不知道怎么办了;在网上搜了很多都是说可以直接运行就没问题,所以让笔者难受了好一会。最后终于发现只要在run后面把两个文件都加上就没有问题了。

go run main.go animal.go
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值