Golang特点以及如何在Linux上运行Windows编译的Go程序

Hello World

// 每个go程序,都必须有一个package main
// 每个go程序,都是.go结尾的
// 一个package(包名)相当于命名空间
package main

// 这是导入一个标准包fmt(format),一般用于格式化输出
import "fmt"

// 这是主函数(所有的函数必须使用func开头)
// 一个函数的返回值,不会放在func前,而是放在参数后面
// 函数左花括号,必须与函数同行,不能写到下一行
func main(){

	// go语言语句不需要使用分号(;)结尾
	fmt.Println("hello world")
}

Golang特点

  • 没有头文件概念.go走天下
  • 强类型语言,编译性语言(python弱类型语言,解释性语言)
  • 一个go语言的应用程序,在运行的时候是不需要依赖外部库的
    • 把执行时所需要的所有库都打包到程序中
    • go程序比较大
    • 如果import的包在程序中没有使用,那么程序不允许编译
  • Go语言是不区分平台的,在Windows下编译一个程序,也可以在Linux下运行,需要两个环境变量来控制
    • GOOS:设定运行的平台
      • mac:GOOS=darwin
      • linux:GOOS=linux
      • windows:GOOS=windows
    • GOARCH:目标平台的体系架构
      • 386:GOARCH=386
      • amd64:GOARCH=amd64
      • arm:GOPATH=arm

image

为什么在Golang中引用了指定的依赖库没有使用,编译会报错?
因为Golang编译时会将所有的库都打包到程序中,导致应用程序比较大,所以如果你一旦引用了指定的包,却没有使用,Golang为了节省不必要的资源是不允许编译通过的。

Windows下编译Go程序,在Linux下运行

输入如下代码并保存01_helloworld.go

package main

import "fmt"

func main(){
	fmt.Println("hello world")
}

进入源码目录,修改GOOS为linux,并编译

set GOOS=linux

# 注意,在哪个bash里面设置了GOOS=linux就在哪个Bash里面执行go build
go build -o hello-linux 01_helloworld.go

image
将编译好的程序复制到linux服务器中

scp hello-linux root@linuxhost:/tmp/go

image

进入Linux服务器,查看/tmp/go目录下是否存在刚刚复制过来的执行文件
image

运行程序
image

至此,我们已经成功的在Windows下编译Go程序,Linux上运行Go程序了。

posted @ 2021-09-27 20:25  Simple_Han  阅读(303)  评论(0编辑  收藏  举报