最近开始学习Go做嵌入式Linux开发,因此有必要了解一下基础知识,以帮助我快速入门golang Linux应用开发。
1、Linux环境安装
解压go环境并移动到指定目录
$ tar -zxvf go1.15.6.linux-amd64.tar.gz
$ mv go /usr/local/
创建golang工作空间
$ mkdir -p ~/golang/{bin,pkg,src}
bin : 目录包含可执行命令pkg : 目录包含包对象src : 目录包含go的源文件,它们被组织成包(每个目录都对应一个包)
配置Go环境变量
$ vim .zshrc 或 .bashrc
export GOROOT=/usr/local/go # 安装目录。
export GOPATH=$HOME/golang # 工作环境
export GOBIN=$GOPATH/bin # 可执行文件存放
export PATH=$GOPATH:$GOBIN:$GOROOT/bin:$PATH # 添加PATH路径
$ go version
2、安装Vscode插件
首先安装GO插件:
go env -w GO111MODULE=on
go env -w GOPROXY=https://goproxy.io,direct
打开vs code,在命令面板上选择安装相应的包:
3、main包和main函数
go install dirnamedirname.exe
4、自定义包
属于某一个包的源文件都应该放置于一个单独命名的文件夹里。按照 Go 的惯例,应该****用包名命名该文件夹。
4.1 导入包
import pathsrc
src
geometry
geometry.go
rectangle
rectprops.go
import "geometry/rectangle"
package main
import (
_ "geometry/rectangle" //仅导入,不使用
)
func main() {
}
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!点击这里找小助理0元领取:
4.2 导出包内符号
在 Go 中,任何以大写字母开头的变量或者函数都是被导出的名字,其它包只能访问被导出的函数和变量。
4.3 init函数
init
func init() {
}
init 函数可用于执行初始化任务,也可用于在开始执行之前验证程序的正确性。包的初始化顺序如下:
- 首先初始化包级别(Package Level)的变量
- 紧接着调用 init 函数。包可以有多个 init 函数(在一个文件或分布于多个文件中),它们按照编译器解析它们的顺序进行调用。
5 go module管理
5.1 导入本地包
go env
go mod initgo mod init
具体示例如下:有以下目录结构,被调用者在子目录,调用者在另一个目录(位置没要求,只要在GOPATH中即可,不一定要在父目录):
> ls -R
.:
9_use_mymod.go mymod
./mymod:
mymod.go
go mod init
//9_use_mymod.go 使用自定义的package,并调用函数
package main
import "mymod" //调用自定义的包
func main() {
mymod.SayHi()
}
//mymod.go 自定义的package,被其他go文件使用
package mymod
import "fmt"
func SayHi() {
fmt.Println("Hi! from package mymod")
}
如果这时候直接编译,会提示找不到mymod。我们需要在调用者的go.mod文件中设置mymod的具体问题,通过以下命令修改go.mod的配置:
# go mod: -replace=./mymod: need old[@v]=new[@w] (missing =)
go mod edit -replace mymod=./mymod
# 这里设置了mymod的具体位置,使用的相对路径,也可以设置绝对路径
之后就可以正常编译了
6 其他命令
go get urlgo doc package_name [函数名}go fmt file
转载自:嵌入式应用研究院
文章来源于golang极速嵌入式Linux应用开发(一)-环境搭建与package管理
原文链接:golang极速嵌入式Linux应用开发(一)-环境搭建与package管理