濮阳杆衣贸易有限公司

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

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

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

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

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

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

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

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

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

1、for, if后面的條件沒有括號(hào)

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

3、沒有while

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

1. branch.go:

package main
import (
 "io/ioutil"
 "fmt"
)
// switch會(huì)自動(dòng)break,除非使用fallthrough;可以swich多條件;panic()報(bào)錯(cuò)讓程序終止
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), // 中斷報(bào)錯(cuò)
  )
}

輸出:

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

2. loop.go:

package main
import (
 "fmt"
 "strconv"
 "os"
 "bufio"
)
// 十進(jìn)制轉(zhuǎn)二進(jì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

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《go build 通過文件名后綴實(shí)現(xiàn)不同平臺(tái)的條件編譯操作》,本文關(guān)鍵詞  build,通過,文件名,后綴,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《go build 通過文件名后綴實(shí)現(xiàn)不同平臺(tái)的條件編譯操作》相關(guān)的同類信息!
  • 本頁收集關(guān)于go build 通過文件名后綴實(shí)現(xiàn)不同平臺(tái)的條件編譯操作的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    靖边县| 仁怀市| 石河子市| 金华市| 阳新县| 宜章县| 丰镇市| 和平区| 新丰县| 荣昌县| 望都县| 绥阳县| 东乌| 衡阳市| 同心县| 福安市| 清水县| 英德市| 拉孜县| 辉南县| 盱眙县| 资阳市| 霸州市| 富裕县| 镇赉县| 武城县| 沁阳市| 丽水市| 定远县| 交口县| 吐鲁番市| 天全县| 宣城市| 科技| 张家界市| 涡阳县| 通海县| 广河县| 正镶白旗| 漳浦县| 瑞昌市|