新聞中心
作為一門高效、跨平臺的編程語言,Golang(又稱 Go)在開發(fā)領(lǐng)域越來越受到了業(yè)界的關(guān)注與青睞。而其在 Linux 上的應用尤其突出,因為 Linux 平臺對于開源、跨平臺的編程語言極為友好。本文將深入探討 Golang 1.8 在 Linux 上的應用。

Golang 語言是谷歌開發(fā)的一種編程語言,于 2023 年首次推出,在短短不到十年的時間里已經(jīng)成為了眾多編程語言中的佼佼者。Golang 在 Linux 上應用的范圍很廣,尤其是在服務器端底層開發(fā)(如網(wǎng)絡編程)以及大規(guī)模分布式計算方面,其效率都表現(xiàn)得非常出色。下面將分別介紹 Golang 1.8 在這兩個方面的應用。
一、網(wǎng)絡編程
Golang 語言在網(wǎng)絡編程方面表現(xiàn)得非常不錯,特別是在和 TCP/IP 協(xié)議打交道的時候,其效率非常高。Golang 1.8 版本新增了一些網(wǎng)絡編程相關(guān)的函數(shù)和組件,使得其在 Linux 平臺之上應用得更為廣泛。例如,Golang 1.8 版本中新增的 net/http/http2 包則為 HTTP/2 協(xié)議提供了支持。這對于需要處理大量并發(fā)請求的 Web 服務來說非常重要,因為 HTTP/2 協(xié)議可以顯著地提高性能。
另外,Golang 1.8 版本還新增了 net/http/pprof 包,這個包可以幫助我們進行性能調(diào)優(yōu),有利于提升我們的應用程序的穩(wěn)定性和效率。利用該包,我們可以方便地查看程序中 CPU 和內(nèi)存的使用情況,以便于針對性地優(yōu)化程序。
二、分布式計算
Golang 語言在分布式計算方面也表現(xiàn)得非常優(yōu)異,這歸功于其天生的并發(fā)特性。在 Linux 上,Golang 的并發(fā)特性表現(xiàn)得更為優(yōu)越,這使得其很適合用于大規(guī)模分布式計算。比如,我們可以通過 Golang 1.8 中提供的 goroutine(協(xié)程)和 channel(通道)特性,輕松地搭建起一個高效的分布式計算框架。
另外,Golang 還提供了一些用于處理分布式計算的庫和工具,例如在 Golang 1.8 中新增的 sync 包,其提供了一些可重入的函數(shù),以便于協(xié)調(diào)進程之間的執(zhí)行。這些函數(shù)包括 WtGroup、Mutex 和 Cond 等。利用這些庫和工具,我們可以很方便地搭建出一個高效且穩(wěn)定的分布式計算環(huán)境。
以上就是 Golang 1.8 在 Linux 平臺應用的一些情況。Golang 語言天生優(yōu)越的并發(fā)特性和高效的網(wǎng)絡編程能力,使得它在 Linux 上表現(xiàn)得非常出色。特別是對于身處 Web 服務器領(lǐng)域、網(wǎng)絡編程領(lǐng)域或是分布式計算領(lǐng)域的開發(fā)者來說,Golang 絕對是一個相當不錯的選擇。當然,除了上述應用方面,Golang 還有很多著名的框架和工具,例如 Gin、Beego、Viper 等等,這些都是提升開發(fā)效率的絕佳選擇。
相關(guān)問題拓展閱讀:
- golang編譯linux失敗
- linux下怎么安裝Go開發(fā)環(huán)境
golang編譯linux失敗
文件權(quán)限的問題。golang編譯linux失敗多數(shù)是文件權(quán)限的桐弊握問題導致。golang又稱go語言是一種靜態(tài)強類型、編譯型語言,是一個開源編程卜舉環(huán)境,可以輕松構(gòu)建簡單局慶、可靠和高效的軟件。
linux下怎么安裝Go開發(fā)環(huán)境
一、Go安裝使用
1、下載Go源碼包
上傳到/usr/local/src目錄下
2、編譯安裝Go到/usr/local
tar zxvf go1.6.3.linux-amd64.tar.gz -C /usr/local/
#注:必須使用root賬戶或者使用sudo來解壓縮Go源碼包
3、設(shè)置PATH環(huán)境變量,添加/usr/local/go/bin到環(huán)境變量
export PATH=$PATH:/usr/local/go/bin
4、安裝到自定義位置
Go二進制文件默認安裝到/usr/local/go,但是可以安裝Go工具到不同的位置,可以自行定義,只需要設(shè)置正確的環(huán)境變量。
例如,安裝Go到家目錄下,必須添加環(huán)境變量到$HOME/.profile
export GOROOT=$HOME/go
export PATH=$PATH:$GOROOT/bin
注:安裝Go到其他目錄時,GOROOT必須設(shè)置為環(huán)境變量
5、檢查是否正確安裝程序
通過設(shè)置一個工作區(qū)和建立一個簡單的程序,檢查是否正確安裝了一個簡單的程序。創(chuàng)建一個目錄包含您的工作歲余橘空間,例如/data/work,并設(shè)置GOPATH環(huán)境變量指向的位置。
export GOPATH=/data/work
#如果不存在/data/work,需要新建
然后,在你的工作內(nèi)創(chuàng)建src/github.com/user/hello,如果使用github,可以使用自己的用戶名代替user,在hello目錄下,新建hello.go
# cat hello.go
package main
import “fmt”
func main {
fmt.Printf(“hello,world!\n”)
}
#使用go編譯hello.go
go install github.com/user/hello
#上面的命令講名叫hello(or hello.exe)的程序放到你的工作區(qū)內(nèi),執(zhí)行下面命令,會得到輸出結(jié)果。
$GOPATH/bin/hello
hello,world!
#當出現(xiàn)hello,world!表明Go已經(jīng)安裝成功可以工作。
二、Go工作區(qū)介紹
1、機構(gòu)組織代碼概述
Go語言程序通常將所有的代碼保存在一個工作區(qū)中。
工作區(qū)包含許多版本控制庫(由Git管理)。
每個存儲庫包含一個或多個包。
每個包由一個或多個在一個目錄中的源文件組成。
一個包的目錄的路徑?jīng)Q定其導入路徑。
注:同于其他的編程環(huán)境中,每一個項目都有一個獨立的工作區(qū)且工作區(qū)是緊密聯(lián)系在一起的版本控制庫。
2、工作區(qū)介紹
工作區(qū)是一個目錄層次結(jié)構(gòu),它的根目錄有三個目錄:
src 包含Go源文件
pkg 包含對象和包
bin 包含可執(zhí)行命令
Go工具創(chuàng)建源碼包并安裝二進制文件到pkg和bin目錄下
src目錄通常包含多乎團個版本控制庫(如Git或Mercurial),跟蹤一個毀謹或多個源包的開發(fā)。
下面展示一個好的工作區(qū)的例子:
bin/
hello# command executable
outyet# command executable
pkg/
linux_amd64/
github.com/golang/example/
stringutil.a# package object
src/
github.com/golang/example/
.git/# Git repository metadata
hello/
hello.go # command source
outyet/
main.go # command source
main_test.go# test source
stringutil/
reverse.go# package source
reverse_test.go# test source
golang.org/x/image/
.git/# Git repository metadata
bmp/
reader.go# package source
writer.go# package source
… (many more repositories and packages omitted) …
上面的屬性圖展示了一個包含兩個存儲庫(example和image)的工作區(qū),example 存儲庫包含兩個命令(hello,outyet),image庫包含bmp包和幾個其他的包。
一個典型的工作區(qū)包含包含許多軟件包和命令的多個源庫。大多數(shù)程序員將所有的源代碼和依賴關(guān)系保存在一個工作區(qū)中
3、GOPATH環(huán)境變量設(shè)置
GOPATH環(huán)境變量指定工作區(qū)的位置。它很可能是唯一的環(huán)境變量,代碼開發(fā)時需要設(shè)置。
開始,創(chuàng)建一個工作區(qū)目錄并設(shè)置相應的gopath。您的工作區(qū)可以位于任何你喜歡的地方,但我們將在這個文檔中使用/data/work。請注意,這不能是您的“Go安裝”路徑相同。
mkdir -p /data/work
export GOPATH=/data/work
為了方便。添加工作區(qū)的bin到PATH中
export PATH=$PATH:$GOPATH/bin
4、導入路徑
一個導入路徑是唯一標識一個包的字符串。一個包的導入路徑對應于它在工作區(qū)內(nèi)或遠程存儲庫中的位置。
從標準庫的軟件包中給出了短的導入路徑等。對于您自己的包,您必須選擇不可能和未來添加到標準庫或其他外部庫的基礎(chǔ)路徑?jīng)_突的路徑。
注意,你不需要將你的代碼發(fā)布到一個遠程存儲庫之前,你可以建立它。這只是一個很好的習慣來組織你的代碼,如果你有一天會出版它。在實踐中,你可以選擇任何任意的路徑名稱,只要它是唯一的標準庫和更大的去生態(tài)系統(tǒng)。
我們將使用github.com/user作為我們的基本路徑。在您的工作區(qū)中創(chuàng)建一個目錄,以保持源代碼:
mkdir -p $GOPATH/src/github.com/user
5、之一個項目
編譯并運行一個簡單的程序,首先選擇一個包的路徑(我們將使用github.com/user/hello)和創(chuàng)建在您的工作區(qū)相應的軟件包目錄:
mkdir $GOPATH/src/github.com/user/hello
創(chuàng)建名叫hello.go的文件,上面創(chuàng)建過,此處略過。
cd $GOPATH/src/github.com/user/hello
go install
$GOPATH/bin/hello
或者:
hello
如果你使用的是一個源代碼管理系統(tǒng),現(xiàn)在是一個很好的時間來初始化一個存儲庫,添加文件,并提交你的之一次更改。再次,這一步是可選的:您不需要使用源代碼管理來寫代碼。
cd $GOPATH/src/github.com/user/hello
git init
Initialized empty Git repository in /data/work/src/github.com/user/hello/.git/
git add hello.go
git commit -m “first commit”
first commit
6、first library
mkdir $GOPATH/src/github.com/user/stringutil
下一步,在目錄下創(chuàng)建一個名為reverse.go文件中有下列內(nèi)容:
// Package stringutil contains utility functions for working with strings.
package stringutil
// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := rune(s)
for i, j := 0, len(r)-1; i
r, r = r, r
}
return string(r)
}
使用go build測試包的編譯
$ go build github.com/user/stringutil
如果當前位置源碼包目錄,只需要:
go build
上面操作并不會產(chǎn)生一個輸出文件,必須使用go install,把包和對象輸出到工作去的pkg目錄內(nèi)
確認stringutil包創(chuàng)建完成后,修改原始hello.go,使用stringutil包:
package main
import (
“fmt”
“github.com/user/stringutil”
)
func main() {
fmt.Printf(stringutil.Reverse(“\n !oG ,olleH”))
}
無論使用go安裝包還是二進制文件,所有相關(guān)的依賴都會自動安裝。所以當你安裝hello程序時:
$ go install github.com/user/hello
對應的stringutil包會自動安裝好。
執(zhí)行新的hello程序,可以看到消息已經(jīng)被反轉(zhuǎn)
# hello
Hello, Go!
完成上面操作之后,工作區(qū)應該為:
├── bin
│ └── hello # command executable
├── pkg
│ └── linux_amd # this will reflect your OS and architecture
│└── github.com
│└── user
│ └── stringutil.a # package object
└── src
└── github.com
└── user
├── hello
│ └── hello.go # command source
└── stringutil
└── reverse.go # package source
注意:go install會把庫文件stringutil.a放到pkg/linux_amd64下邊(目錄結(jié)構(gòu)跟源代碼結(jié)構(gòu)一樣)。這樣可以go命令可以直接找到對應的包對象,避免不必要的重復編譯。linux_amd64是為了根據(jù)操作系統(tǒng)和你的系統(tǒng)架構(gòu)交叉編譯。
所有Go可執(zhí)行程序都通過靜態(tài)方式鏈接在一起,所以在運行時是不需要相關(guān)的包對象(庫)。
7、包命令
所有的Go源代碼都以下面的語句開始:
package name
其中name就是包引用默認的名稱,一個包中的所有文件必須使用同一個包名,可執(zhí)行命令必須是main。
一個二進制文件下所有的包名不需要唯一,但是引用路徑必須唯一
8、測試
Go自帶了一個輕量級的測試框架,由go test和testing包組成。
可以通過新建xx_test.go寫一個測試,其中包含若干個TestXXX函數(shù)。測試框架會自動執(zhí)行這些函數(shù);如果函數(shù)中包含tError或t.Fail, 對應的測試會被判為失敗。
添加一個針對stringutil的測試文件$GOPATH/src/github.com/user/stringutil/reverse_test.go,包含以下內(nèi)容:
package stringutil
import “testing”
func TestReverse(t *testing.T) {
cases := struct {
in, want string
}{
{“Hello, world”, “dlrow ,olleH”},
{“Hello, 世界”, “界世,olleH”},
{“”, “”},
}
for _, c := range cases {
got := Reverse(c.in)
if got != c.want {
t.Errorf(“Reverse(%q) == %q, want %q”, c.in, got, c.want)
}
}
}
#通過go test測試
# go test github.com/user/stringutil
ok github.com/user/stringutil 0.002s
#同樣的,在包文件夾下可以忽略路徑而直接執(zhí)行g(shù)o test
# go test
PASS
ok github.com/user/stringutil 0.002s
9、遠程包
包的引用路徑用來描述如何通過版本控制系統(tǒng)獲取包的源代碼。go工具通過引用路徑自動從遠程代碼倉庫獲取包文件。比如本文中用的例子也對應的保存在github.com/golang/example下。go可以通過包的代碼倉庫的url直接獲取、生成、安裝對應的包。
# go get github.com/golang/example/hello
# $GOPATH/bin/hello
Hello, Go examples!
如果工作區(qū)中不存在對應的包,go會將對應的包放到GOPATH環(huán)境變量指明的工作區(qū)下。(如果包已經(jīng)存在,go跳過代碼拉去而直接執(zhí)行g(shù)o install)
建議詳細看一下
linux golang 1.8的介紹就聊到這里吧,感謝你花時間閱讀本站內(nèi)容,更多關(guān)于linux golang 1.8,深入了解 Linux 上的 Golang 1.8 版本,golang編譯linux失敗,linux下怎么安裝Go開發(fā)環(huán)境的信息別忘了在本站進行查找喔。
成都網(wǎng)站設(shè)計制作選創(chuàng)新互聯(lián),專業(yè)網(wǎng)站建設(shè)公司。
成都創(chuàng)新互聯(lián)10余年專注成都高端網(wǎng)站建設(shè)定制開發(fā)服務,為客戶提供專業(yè)的成都網(wǎng)站制作,成都網(wǎng)頁設(shè)計,成都網(wǎng)站設(shè)計服務;成都創(chuàng)新互聯(lián)服務內(nèi)容包含成都網(wǎng)站建設(shè),小程序開發(fā),營銷網(wǎng)站建設(shè),網(wǎng)站改版,服務器托管租用等互聯(lián)網(wǎng)服務。
標題名稱:深入了解 Linux 上的 Golang 1.8 版本 (linux golang 1.8)
分享鏈接:http://www.dlmjj.cn/article/cdgsdhe.html


咨詢
建站咨詢
