• 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程序了。

  • 相关阅读:
    记录一次无法很好解决的问题
    java与进制转换
    花了点时间写了下测试框架
    利用eclipse或者pycharm编写monkeyrunner脚本,cmd打开应用“转转”并截图保存到D盘
    Instrumentation
    关于学生机受控应用的问题总结
    忙里偷闲一天
    linux下python3的安装(已安装python2的情况下)
    ROS上利用usb_cam读取摄像头图像
    ch8 -- directMethod
  • 原文地址:https://www.cnblogs.com/insipid/p/15345096.html
Copyright © 2020-2023  润新知