婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

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

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

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

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

補充:Golang: 條件和循環

條件、循環要點

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"
)
// 十進制轉二進制,for中省略初始條件
func convertToBin(n int) string {
 result := ""
 for ; n>0; n /= 2 {
  lsb := n % 2
  result = strconv.Itoa(lsb) + result
 }
 return result
}
// 一行行讀文件,for中省略初始條件,相當于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())
 }
}
// 死循環,不要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

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

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

標簽:泰安 黔西 松原 宜春 武漢 河池 保定 鷹潭

巨人網絡通訊聲明:本文標題《go build 通過文件名后綴實現不同平臺的條件編譯操作》,本文關鍵詞  build,通過,文件名,后綴,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《go build 通過文件名后綴實現不同平臺的條件編譯操作》相關的同類信息!
  • 本頁收集關于go build 通過文件名后綴實現不同平臺的條件編譯操作的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 哈密市| 武定县| 郧西县| 巢湖市| 湘西| 台北市| 吴忠市| 中山市| 张家港市| 祁连县| 沙雅县| 焦作市| 宁化县| 德格县| 喀什市| 秦安县| 双牌县| 长乐市| 张北县| 宜君县| 台江县| 沙河市| 蛟河市| 泊头市| 石城县| 奎屯市| 岑巩县| 赣榆县| 海林市| 闸北区| 绥江县| 宜州市| 西林县| 沁水县| 兴隆县| 聊城市| 石景山区| 林口县| 潼南县| 中方县| 富源县|