濮阳杆衣贸易有限公司

主頁 > 知識庫 > go build 通過文件名后綴實現(xiàn)不同平臺的條件編譯操作

go build 通過文件名后綴實現(xiàn)不同平臺的條件編譯操作

熱門標(biāo)簽:江蘇呼叫中心外呼系統(tǒng)有效果嗎 杭州人工智能電銷機器人費用 官渡電銷外呼管理系統(tǒng)怎么收費 400開頭電話怎樣申請 赤峰電銷 地圖區(qū)域圖標(biāo)注后導(dǎo)出 貴州電話智能外呼系統(tǒng) 谷歌美發(fā)店地圖標(biāo)注 利用地圖標(biāo)注位置

go build 可以通過標(biāo)簽或者文件名的后綴來提供條件編譯,這里說下通過文件名的后綴來提供條件編譯

文件命名約定可以在go build 包里找到詳細的說明,簡單來說,就是源文件包含后綴:_$GOOS.go,那么這個源文件只會在這個平臺下編譯,_$GOARCH.go也是如此。

這兩個后綴可以結(jié)合在一起使用,但是要注意順序:_$GOOS_$GOARCH.go,不能反過來用:_$GOARCH_$GOOS.go

例如下面截圖,這些文件定義了對應(yīng)不同平臺下是否需要編譯。

補充:Golang: 條件和循環(huán)

條件、循環(huán)要點

1、for, if后面的條件沒有括號

2、if條件里也可以定義變量

3、沒有while

4、switch不需要break,也可以直接switch多個條件

1. branch.go:

package main
import (
 "io/ioutil"
 "fmt"
)
// switch會自動break,除非使用fallthrough;可以swich多條件;panic()報錯讓程序終止
func grade(score int) string {
 g := ""
 switch {
 case score  0 || score > 100:
  panic(fmt.Sprintf("Wrong score: %d", score))
 case score  60:
  g = "F"
 case score  80:
  g = "C"
 case score  90:
  g = "B"
 case score = 100:
  g = "A"
 //default:
 // panic(fmt.Sprintf("Wrong score: %d", score))
 }
 return g
}
func readFile(filename string) {
 contents, err := ioutil.ReadFile(filename)
 if err != nil {
  fmt.Println(err)
 } else {
  fmt.Printf("%s\n", contents)
 }
 // if的條件里可以賦值,其賦值的變量作用域就在if的block中
 if contents, err := ioutil.ReadFile(filename); err != nil {
  fmt.Println(err)
 } else {
  fmt.Printf("%s\n", contents)
 }
}
func main() {
 const filename = "abc.txt"
 readFile(filename)
 fmt.Println()
 fmt.Println(
  grade(0),
  grade(56),
  grade(82),
  grade(100),
  //grade(101), // 中斷報錯
  )
}

輸出:

abcde
12345
hello
world
abcde
12345
hello
world
F F B A

2. loop.go:

package main
import (
 "fmt"
 "strconv"
 "os"
 "bufio"
)
// 十進制轉(zhuǎn)二進制,for中省略初始條件
func convertToBin(n int) string {
 result := ""
 for ; n>0; n /= 2 {
  lsb := n % 2
  result = strconv.Itoa(lsb) + result
 }
 return result
}
// 一行行讀文件,for中省略初始條件,相當(dāng)于while
func printFile(filename string) {
 file, err := os.Open(filename)
 if err != nil {
  panic(err)
 }
 scanner := bufio.NewScanner(file)
 for scanner.Scan() {
  fmt.Println(scanner.Text())
 }
}
// 死循環(huán),不要while了
func forever() {
 for {
  fmt.Println("abc")
 }
}
func main() {
 fmt.Println(
  convertToBin(5), // 101
  convertToBin(13), // 1101
  convertToBin(72387885),
  convertToBin(0),
  )
 printFile("abc.txt")
 //forever()
}

輸出:

101 1101 100010100001000110100101101 
abcde
12345
hello
world

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Go遞歸修改文件名的實例代碼
  • Go并發(fā):使用sync.WaitGroup實現(xiàn)協(xié)程同步方式
  • go等待一組協(xié)程結(jié)束的操作方式
  • SpringBoot整合MongoDB實現(xiàn)文件上傳下載刪除
  • golang協(xié)程池模擬實現(xiàn)群發(fā)郵件功能
  • Go 如何批量修改文件名

標(biāo)簽:泰安 黔西 松原 宜春 武漢 河池 保定 鷹潭

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go build 通過文件名后綴實現(xiàn)不同平臺的條件編譯操作》,本文關(guān)鍵詞  build,通過,文件名,后綴,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《go build 通過文件名后綴實現(xiàn)不同平臺的條件編譯操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于go build 通過文件名后綴實現(xiàn)不同平臺的條件編譯操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    顺昌县| 金溪县| 蕲春县| 防城港市| 长葛市| 建水县| 泾阳县| 南漳县| 金门县| 板桥市| 东阿县| 阿巴嘎旗| 宁强县| 原阳县| 宜兰县| 潍坊市| 石河子市| 虹口区| 金阳县| 即墨市| 陕西省| 溧阳市| 湖州市| 诏安县| 连城县| 太湖县| 七台河市| 东明县| 桓仁| 西乡县| 大悟县| 伊金霍洛旗| 临海市| 泗阳县| 长武县| 栖霞市| 金秀| 大冶市| 葵青区| 太谷县| 左权县|