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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM